Filament action不执行

filament的resource列表页table使用了groupBy分组统计,设置column action后点击不执行

期望是点击column弹出modal,debug后发现点击column时filament会根据当前行主键查数据库,找不到当前行记录,就不会触发相关action.

解决方法是重写对应resource的ListRecords实现类的getTableRecordKeygetTableRecord方法,返回记录即可触发

例如对于产品来说,有一个按照产品分类统计的table,主键设置成product_cat,返回第一条这个分类的产品即可

    public function getTableRecordKey(Model $record): string
    {
        return $record->product_cat;
    }

    public function getTableRecord(?string $key): ?Model
    {
        return $this->getTableQuery()->where('product_cat', $key)->first();
    }

action逻辑

Tables\Actions\Action::make('detail_'.$detail)->modal()->modalContent(function ($livewire, $record, Table $table) use ($detail) {
}

在modalcontent里可以通过依赖注入获取对应信息