过滤器
开始
过滤器(Filters)让你可以以某种方式筛选 Eloquent 查询的数据,减少表格中的记录数。
如果你在 Livewire 组件中使用过滤器,请将其放在 getTableFilters() 方法中:
protected function getTableFilters(): array
{
return [
// ...
];
}
如果你在后台面板的资源或者关系管理器中使用,将它们放在 $table->filters() 方法中:
public static function table(Table $table): Table
{
return $table
->filters([
// ...
]);
}
过滤器使用静态方法 make() 并传入过滤器名称创建。过滤器名称应该是唯一的。然后你应该传一个回调函数作为参数到 query() 方法中,该回调函数使用过滤器的查询范围:
use Filament\Tables\Filters\Filter;
use Illuminate\Database\Eloquent\Builder;
Filter::make('is_featured')
->query(fn (Builder $query): Builder => $query->where('is_featured', true))
设置标签
默认情况下,显示在过滤器表单中的过滤器标签,是由过滤器名生成。你可以使用 label() 标签自定义:
use Filament\Tables\Filters\Filter;
Filter::make('is_featured')->label('Featured')
此外,你也可以使用 translateLabel() 方法自动翻译标签:
use Filament\Tables\Filters\Filter;
Filter::make('is_featured')->translateLabel() // Equivalent to `label(__('Is featured'))`