我发生了一件奇怪的事情,我无法理解,并且想知道是否有人可以帮助我确定正在发生的事情。

我有2个表(评估程序,流程)和数据透视表(process_assessor)。我正在尝试使用评估者的流程来更新数据透视表,因此我有一个表格,该表格在提交时会传递给此方法...

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', []) );


但是第一种选择更可靠。

关于php - 使用同步在Laravel中的数据透视表中分离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27187200/

10-10 11:23