mam następujące tabele:Protect stół obrotowy od masowej przypisanie używając elokwentny
document: id, name;
author: id, name, job_title;
document_author: document_id, author_id, position
olewam tablicę o następującej strukturze:
$attributes = [name, job_title, position];
próbuję stworzyć modelu autora i dołączyć to udokumentować:
$author = \Author::create($attributes);
\Document::find($id)->authors()->save($author,$attributes);
Potem dostać QueryException
, ponieważ laravel próbuje masowej assign atrybuty do tabeli przestawnej, podczas gdy powinna ona przechodzić tylko przez pole position
.
Jedynym rozwiązaniem mam jest filtrowanie tablicę, tak:
$author = \Author::create($attributes);
$pivotAttributes = array_only($attributes, ['position'])
\Document::find($id)->authors()->save($author,$pivotAttributes);
Czy istnieje lepszy sposób, aby określić, które kolumny tabeli przestawnej są napełniane, lepiej gdzieś w modelu lub w jego relacja?
Jeśli '$ attributes' jest' Request' (lub 'Input') instancji, można zrobić' $ request-> tylko ("pozycja '); ' –