Hi, I have a service that has a load of options, I've queried the options in a select filter, but I am getting:
An attempt was made to evaluate a closure for [Filament\Tables\Filters\SelectFilter], but [$value] was unresolvable.
Do I need to do something else as it's a livewire component? Thanks
<?php
namespace App\Services;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Log;
class PricingFilterService
{
public static function getOptions(): array
{
return [
'under_40' => 'Under 40',
'40_60' => '40 - 60',
'60_80' => '60 - 80',
'80_100' => '80 - 100',
'100_120' => '100 - 120',
'120_140' => '120 - 140',
'140_160' => '140 - 160',
'160_180' => '160 - 180',
'180_200' => '180 - 200',
'200_plus' => '200+',
];
}
public static function applyQuery(Builder $query, $value, $column): Builder
{
$query->whereNotNull($column);
return match ($value) {
'under_40' => $query->where($column, '<', 40),
'40_60' => $query->whereBetween($column, [40, 60]),
'60_80' => $query->whereBetween($column, [60, 80]),
'80_100' => $query->whereBetween($column, [80, 100]),
'100_120' => $query->whereBetween($column, [100, 120]),
'120_140' => $query->whereBetween($column, [120, 140]),
'140_160' => $query->whereBetween($column, [140, 160]),
'160_180' => $query->whereBetween($column, [160, 180]),
'180_200' => $query->whereBetween($column, [180, 200]),
'200_plus' => $query->where($column, '>', 200),
default => $query,
};
}
}
SelectFilter::make('sport_pricing')
->label('Individual pricing')
->options(PricingFilterService::getOptions())
->query(function (Builder $query, $value) {
return PricingFilterService::applyQuery($query, $value, 'sport_pricing');
}),