Filament ToggleColumn 保持仅有一个有效记录,激活时将其他全部禁用

有时我们需要将表格的某一行记录设置为激活状态、同时将改行以外的所有其他记录设置为禁用状态。这在使用 Filam

有时我们需要将表格的某一行记录设置为激活状态、同时将改行以外的所有其他记录设置为禁用状态。这在使用 Filament 的 ToggleColumn 功能时非常容易实现。

您需要做的就是使用ToggleColumn 上的beforeStateUpdated()函数并在其中运行一个更新 Eloquent 查询。

例如,如果您有一个users.active布尔值的 DB 列,则代码如下:

App/Filament/Resources/UserResource.php:

public static function table(Table $table): Table
{
    return $table
        ->columns([
            TablesColumnsTextColumn::make('name'),
            TablesColumnsToggleColumn::make('active')
                ->beforeStateUpdated(function (User $record) {
                    User::where('id', '!=', $record->id)->update(['active' => false]);
                }),
        ])

借助于 livewire 带来的响应特性,表格将会自动刷新。