我正在尝试处理CrudController中的字段如何以完全自定义的方式存储或更新特定模型上的数据。我希望traitStore()和traitUpdate()方法完全忽略此字段,但希望数据仍通过请求传递。这是专门针对使用select2_multiple字段的多对多关系。
我希望将关系ID经由请求对象传递给Store或Update方法,但是我不希望traitStore()
或traitUpdate()
方法实际上对该特定字段引用执行更新。
例如...
我的控制器中有此字段
$this->crud->addField(
[
'label' => "Groups",
'type' => 'select2_multiple',
'name' => 'groups',
'entity' => 'groups',
'attribute' => 'title',
'model' => "App\Models\Group",
'pivot' => true
]
);
而且我像这样覆盖了存储和更新方法。
public function store()
{
$this->crud->setValidation(UserRequest::class);
// WOULD LIKE TO SAVE EVERYTHING BUT IGNORE THE GROUPS FIELD
$response = $this->traitStore();
// DO WHATEVER I WANT WITH GROUPS AT THIS POINT
$groups = $request->groups
return $response;
}
public function update()
{
$this->crud->setValidation(UserRequest::class);
// WOULD LIKE TO SAVE EVERYTHING BUT IGNORE THE GROUPS FIELD
$response = $this->traitUpdate();
// DO WHATEVER I WANT WITH GROUPS AT THIS POINT
$groups = $request->groups
return $response;
}
查看我的评论,我想获得对这些组的引用,并根据需要进行模型更新。
我尝试取消请求unset($this->request{'groups'})
中的groups值,但是当我这样做时,它仍会更新/删除关系。
这里是您需要执行的操作,以删除由CrudController更新的引用。
public function update()
{
$this->crud->setValidation(UserRequest::class);
$request = clone $this->request;
$this->crud->request->request->remove('groups');
$this->crud->removeField('groups');
$groups = $request->groups
$response = $this->traitUpdate();
return $response;
}