在 Filament 中想要显示数据列表很简单,但很多时候我们需要要根据某些条件(如用户角色)修改原始查询,应该怎么办呢?
设想一下:数据库中有用户1(author_id = 1)发表的两篇文章和用户2(author_id = 2)发表的五篇文章。我们想要根据用户id显示对应的文章列表。
Filament 官方提供了modifyQueryUsing()
方法,实现这一需求也非常简单:
class PostResource extends Resource
{
// ...
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('title'),
Tables\Columns\TextColumn::make('author.name'),
])
->modifyQueryUsing(function (Builder $query) {
return $query->where('author_id', auth()->id());
})
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
// ...
}