Closed ziming closed 1 year ago
Currently every resource has a long duplicated piece of code for the created_at filter, i suggest moving it to something like this
<?php <?php namespace App\Filament\Filters; use Filament\Forms\Components\DatePicker; use Filament\Tables\Filters\Filter; use Illuminate\Database\Eloquent\Builder; class DateRangeFilter extends Filter { public static function make(?string $name = null): static { return parent::make($name) ->form([ DatePicker::make($name . '_from'), DatePicker::make($name . '_until'), ]) ->query(function (Builder $query, array $data) use (&$name): Builder { return $query ->when( $data[$name . '_from'], fn (Builder $query, $date): Builder => $query->whereDate($name, '>=', $date), ) ->when( $data[$name . '_until'], fn (Builder $query, $date): Builder => $query->whereDate($name, '<=', $date), ); }); } }
then in the resources do DateRangeFilter::make('created_at')
Hi @ziming thank you for your suggestion... are you able to send a PR?
Currently every resource has a long duplicated piece of code for the created_at filter, i suggest moving it to something like this
then in the resources do DateRangeFilter::make('created_at')