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

标签 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

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

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

最佳答案

简单地转换为一个数组:

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/

相关文章:

PHP MySQL 插入语句不会插入数据

mongodb - 创建基于用户偏好的通知系统

php - 如何进行排除自定义属性集以附加模型的 Eloquent 查询?

php - Laravel 检查 url 是否存在并且什么都不做

php - 将 Laravel DB::raw() 查询转换为 Eloquent

mysql - Eloquent 按关系过滤(仅最后一条记录)

php - 授权 header 和 apache_request_headers 函数

javascript - 客户端和服务器端编程有什么区别?

php - 我可以在 PHP 中混合使用 MySQL API 吗?

php - 使用分形变换 Eloquent 模型