Skip to content
Advertisement

Laravel – Mass Assignment Exception error

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:

screenshot

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.

Advertisement

Answer

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 Docs

class Bedroom extends Eloquent {
    protected $fillable = array('criteria_id', 'bedroom');
}

Also you can use the create method if you want. It creates a new model and saves it directly:

foreach(Input::get('bedrooms') as $bedroom){
    $new_bedroom=array(
        'criteria_id' => $criteria->id,
        'bedroom' => $bedroom,
        );
    $bedroom = Bedroom::create($new_bedroom);
}
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement