如果你需要自定义表格搜索,你可以使用 \Filament\Tables\Concerns\InteractsWithTable trait 重写 Livewire 组件中的 applySearchToTableQuerty 方法。
如果你要搜索的字段并没有在表格中显示,或者你现有的项目已经设置了复杂的搜索的范围查询并且要在该项目上使用Filament时,这就变得很有用了。
注意:如果你使用的是 Filament 后台面板,这就是你的 “ListRecords” 页面。
示例:
//App\Filament\Resources\PostResource\ListPosts
public function isTableSearchable(): bool
{
return true;
}
protected function applySearchToTableQuery(Builder $query): Builder
{
if (filled($searchQuery = $this->getTableSearchQuery())) {
//In this example a filter scope on the model is used
//But you can also customize the query right here!
return $query->filter(['search' => $searchQuery]);
}
return $query;
}
//App\Models\Post
public function scopeFilter($query, array $filters)
{
$query->when($filters['search'] ?? null, function ($query, $search) {
$query->where('title', 'like', '%'.$search.'%')
->orWhere('author_name', 'like', '%'.$search.'%');
})
->when($filters['status'] ?? null, function ($query, $status) {
$query->where('status', '=', $status);
});
}