Защитить сводную таблицу от массового присвоения, используя красноречивый

У меня есть следующие таблицы:

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);

Есть ли лучший способ, чтобы определить, какие столбцы сводной таблицы являются заполняемыми, лучше где-то в модели или в ее отношении?

Ответы

Ответ 1

Я копал в коде Laravel, и я не нашел хорошего способа указать заполняемый или защищенный параметр для класса Pivot, даже если это подкласс модели.

Это означает, что вы приближаетесь уже довольно хорошо.