I am trying to save multiple rows to a table, however, I am presented with a Mass Assignment Error
.
The error is: Illuminate \ Database \ Eloquent \ MassAssignmentException criteria_id
$criteria->save();
$criteria_id = $criteria->id;
foreach(Input::get('bedrooms') as $bedroom){
$new_bedroom=array(
'criteria_id' => $criteria->id,
'bedroom' => $bedroom,
);
$bedroom = new Bedroom($new_bedroom);
$bedroom->save();
}
My database structure is:
so there isn't any incorrect spelling. The criteria_id comes from the variable from the recently saved criteria (see code above forloop).
Any help would be greatly appreciated.
To be able to set properties by passing them to the model's constructor, you need to list all the properties you need in the
$fillable
array. As mentioned in the DocsAlso you can use the
create
method if you want. It creates a new model and saves it directly:The inverse of what lukas said is "guarded". Instead of "white-listing" fields, you could just declare which are guarded.
For example:
This was more useful for me because I didn't really care about most fields.
Gotten from the docs for Laravel 5.2 but I assume it works on older versions.
To allow any fields, you could just provide an empty array: