我有以下表格:
document: id, name;
author: id, name, job_title;
document_author: document_id, author_id, position
我正在传递以下结构的数组:
$attributes = [name, job_title, position];
我正在尝试创建作者模型并将其附加到文档:
$author = \Author::create($attributes);
\Document::find($id)->authors()->save($author,$attributes);
然后我遇到了 QueryException
,因为 Laravel 尝试向 pivot 表中进行批量赋值属性,而它只应该传递一个 position
字段。
我唯一得到的解决方案是过滤数组,像这样:
$author = \Author::create($attributes);
$pivotAttributes = array_only($attributes, ['position'])
\Document::find($id)->authors()->save($author,$pivotAttributes);
是否有更好的方法来定义交叉表的填充列,最好是在模型或其关系中的某个地方?
$attributes
是一个Request
(或Input
)实例,您可以执行$request->only('position');
。 - Martin Bean