有时我们需要将表格的某一行记录设置为激活状态、同时将改行以外的所有其他记录设置为禁用状态。这在使用 Filament 的 ToggleColumn 功能时非常容易实现。
您需要做的就是使用ToggleColumn 上的beforeStateUpdated()
函数并在其中运行一个更新 Eloquent 查询。
例如,如果您有一个users.active
布尔值的 DB 列,则代码如下:
App/Filament/Resources/UserResource.php:
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('name'),
Tables\Columns\ToggleColumn::make('active')
->beforeStateUpdated(function (User $record) {
User::where('id', '!=', $record->id)->update(['active' => false]);
}),
])
借助于 livewire 带来的响应特性,表格将会自动刷新。