使用同步在Laravel中的数据透视表中分离

时间:2014-11-28 10:56:59

标签: php laravel eloquent

我发生了一些奇怪的事情,我无法理解,并想知道是否有人可以帮我弄清楚发生了什么。

我有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

但是,(这是奇怪的一点)我还有一个用户配置文件模块,它使用与数据透视表“同步”的完全相同的方式,但是当我提交该表单时,该特定模块的所有选项都未选中,那么它工作时,用户在枢轴中与他们分离。

我做错了什么?有什么想法吗?

1 个答案:

答案 0 :(得分:6)

简单地转换为数组:

return $assessor->processes()->sync( (array) $this->request->get('process_id') );

或者,您可以将空数组用作get()的默认值:

return $assessor->processes()->sync( $this->request->get('process_id', []) );

然而,第一种选择更可靠。