Filament 修改数据表格的基础查询方法

89 阅读1分钟

在 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(), ]), ]); } // ... }