ben*_*r78 2 php laravel eloquent
我有一些奇怪的事情,我无法理解,并想知道是否有人可以帮我弄清楚发生了什么.
我有2个表(评估者,流程)和一个数据库(process_assessor).我正在尝试使用评估员的流程更新数据透视表,因此我有一个表单,在提交时将其传递给此方法...
public function updateProcesses( $id )
{
$assessor = $this->model->find( $id );
return $assessor->processes()->sync( $this->request->get( 'process_id' ) );
}
Run Code Online (Sandbox Code Playgroud)
这工作正常但是当更新用户没有进程时我收到错误消息...
Argument 1 passed to Illuminate\Database\Eloquent\Relations\BelongsToMany::formatSyncList() must be of the type array, null given, called
Run Code Online (Sandbox Code Playgroud)
然而,(这是奇怪的一点)我还有一个用户配置文件模块,它使用与数据透视表"同步"完全相同的方式但是当我提交该表单时,该特定模块的所有选项都未选中,那么它可以工作,用户在数据透视表中与它们分离.
我究竟做错了什么?有任何想法吗?
简单地转换为数组:
return $assessor->processes()->sync( (array) $this->request->get('process_id') );
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用空数组作为默认值get():
return $assessor->processes()->sync( $this->request->get('process_id', []) );
Run Code Online (Sandbox Code Playgroud)
但是第一种选择更可靠.
| 归档时间: |
|
| 查看次数: |
2010 次 |
| 最近记录: |