我有如下表:保護的數據透視表雄辯
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);
有沒有什麼更好的辦法,確定哪些數據透視表的列是可填寫的,更好的地方在模型或在它的關係是什麼?
如果'$ attributes'是'Request'(或'Input')例如,你可以做'$請求 - >只('位置');' –