Laravel Filament 在保存之前处理关系数据

问题描述 投票:0回答:1

我有一个问题:在细丝表单中,我有一个用复选框列表呈现的多对多关系。在保存数据库之前,我必须使用列表中的值执行一些“操作”。

可能没有办法处理该值?

我查看了 mutateFormDataBeforeSave 或 handleRecordCreation 方法,但 $data 变量包含除关系数据之外的所有表单数据。

laravel many-to-many before-save laravel-filament
1个回答
0
投票

如果有人还需要它,您可以使用

saveRelationshipsUsing()
字段中的
ChecboxList
方法,并相应地注入您所需的实用程序。注入
$state
将为您提供一组已检查的模型 ID。以下是我在项目中使用的片段。

CheckboxList::make('categories')
                 ->relationship(
                    'categories',
                     titleAttribute: 'name',
                 )
                 ->saveRelationshipsUsing(function (Model $record, $state){
                        //your code here
                        //eg: $record->categories()->sync($state)  for manyToMany default behaviour
                 })

这里,

$model
给出了资源模型,state给出了所选类别的id,如
[1,3,4]

© www.soinside.com 2019 - 2024. All rights reserved.