-
Notifications
You must be signed in to change notification settings - Fork 34
Closed
Description
- Laravel Version: 10.10.0
- Nova Version: 4.24.2
- PHP Version: 8.2.4
Description:
When you filter a table with soft deletes (only deleted or with deleted), table is correctly filtered but not metrics.
Metric values are totally useless when filtered by delete status
I tried with 2 metrics, Trend and Partition, same issue.
In my partition metric, I need to manually return results and need to perform adequate queries. This is how I discovered it.
Detailed steps to reproduce the issue on a fresh Nova installation:
Register Metrics with ByStatus::make()->refreshWhenFiltersChange()
Create a Metric and filter table by Soft delete status.
This is my custom Metric result, same issue
<?php
namespace App\Nova\Metrics;
use App\Models\Product;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
use Laravel\Nova\FilterDecoder;
use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\Metrics\Partition;
class ByStatus extends Partition
{
/**
* Calculate the value of the metric.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @return mixed
*/
public function calculate(NovaRequest $request)
{
ray((new FilterDecoder($request->filter, $this->filters))->filters());
// FilterDecoder doesn't have SoftDeletes constrained filter
// onlyActive and onlyInactive are local scopes with queries by dates and some intern logic as I don't have a column to perform it by default
return $this->result([
'Active' => Product::onlyActive()->tap(function ($query) use ($request) {
return $this->applyFilterQuery($request, $query);
})->ray()->count(),
'Inactive' => Product::onlyInactive()->tap(function ($query) use ($request) {
return $this->applyFilterQuery($request, $query);
})->count(),
]);
}
}Metadata
Metadata
Assignees
Labels
No labels