Php 在Laravel的透视表中使用sync分离
我有一些奇怪的事情发生,我不明白,不知道是否有人能帮我弄清楚到底发生了什么 我有两个表(评估员、流程)和一个轴(流程评估员)。我正在尝试用评估员的流程更新透视图,所以我有一个表单,提交时会传递给此方法Php 在Laravel的透视表中使用sync分离,php,laravel,eloquent,Php,Laravel,Eloquent,我有一些奇怪的事情发生,我不明白,不知道是否有人能帮我弄清楚到底发生了什么 我有两个表(评估员、流程)和一个轴(流程评估员)。我正在尝试用评估员的流程更新透视图,所以我有一个表单,提交时会传递给此方法 public function updateProcesses( $id ) { $assessor = $this->model->find( $id ); return $assessor->processes()->sync( $this->re
public function updateProcesses( $id )
{
$assessor = $this->model->find( $id );
return $assessor->processes()->sync( $this->request->get( 'process_id' ) );
}
这很好,但是当更新一个没有进程的用户时,我会收到一条错误消息
Argument 1 passed to Illuminate\Database\Eloquent\Relations\BelongsToMany::formatSyncList() must be of the type array, null given, called
然而,(这是奇怪的一点)我也有一个用户配置文件模块,它使用完全相同的方式与数据透视表“同步”。然而,当我提交表单时,未选中该特定模块的所有选项,然后它就工作了,用户在数据透视中与它们分离
我做错了什么?有什么想法吗?只需将其转换为数组:
return $assessor->processes()->sync( (array) $this->request->get('process_id') );
或者,您可以使用空数组作为
get()
的默认值:
然而,第一种选择更可靠
return $assessor->processes()->sync( $this->request->get('process_id', []) );