Filters
Overview
Filters narrow a table's rows, and are real form fields that live in one panel.
use Illuminate\Database\Eloquent\Builder;
use Xelqun\Tables\Filters\Filter;
use Xelqun\Tables\Filters\SelectFilter;
public function filters(): array
{
return [
SelectFilter::make('status')->options(['draft' => 'Draft', 'active' => 'Active']),
Filter::make('in_stock')->query(fn (Builder $query) => $query->where('stock', '>', 0)),
];
}
The URL keeps the active filters, so a shared link shows the same rows.
| Filter | Use it for |
|---|---|
| SelectFilter | One or many values |
| TernaryFilter | Yes, no, or either |
| QueryBuilder | Rules people build themselves |
| Filter | Your own fields and query |
| TrashedFilter | Soft deleted records, in a panel |
Shared options
label() changes the name. default() sets the value before the viewer changes anything. hidden() removes the filter.
SelectFilter::make('status')->options($statuses)->default('active');