我有以下表格:
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尝试将属性大量分配给数据透视表,而它只应传递position
字段。
我得到的唯一解决方案是过滤数组,如:
$author = \Author::create($attributes);
$pivotAttributes = array_only($attributes, ['position'])
\Document::find($id)->authors()->save($author,$pivotAttributes);
有没有更好的方法,定义数据透视表的哪些列是可填充的,更好地在模型中的哪个位置或在它的关系中?
答案 0 :(得分:2)
我正在挖掘Laravel代码,我没有找到任何好的方法如何为Pivot类指定fillable或guarded参数,即使它是Model的子类。
这意味着你已经很好了。
答案 1 :(得分:2)
试试吧
$author = \Author::create($attributes);
$author->documents()->attach($id,["position"=>$request->get('position')]);
显示文档 http://laravel.com/docs/5.0/eloquent#inserting-related-models