Laravel – Error de excepción de asignación de masa

Estoy intentando guardar varias filas en una tabla, sin embargo, se me presenta un Mass Assignment Error .

El error es: 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(); } 

Mi estructura de base de datos es:

captura de pantalla

entonces no hay una ortografía incorrecta. El criterio_id proviene de la variable de los criterios guardados recientemente (vea el código anterior para el bucle).

Cualquier ayuda sería muy apreciada.

Para poder establecer las propiedades pasándolas al constructor del modelo, debe enumerar todas las propiedades que necesita en la matriz $fillable . Como se menciona en los Documentos

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

También puede usar el método create si lo desea. Crea un nuevo modelo y lo guarda directamente:

 foreach(Input::get('bedrooms') as $bedroom){ $new_bedroom=array( 'criteria_id' => $criteria->id, 'bedroom' => $bedroom, ); $bedroom = Bedroom::create($new_bedroom); } 

El inverso de lo que lukas dijo es “protegido”. En lugar de campos de “lista blanca”, puede declarar cuáles están protegidos.

Por ejemplo:

 class Bedroom extends Model { protected $guarded = ['id']; } 

Esto fue más útil para mí porque realmente no me preocupaban la mayoría de los campos.

Obtuve de los documentos para Laravel 5.2, pero supongo que funciona en versiones anteriores.

Para permitir cualquier campo, puede proporcionar una matriz vacía:

 class Bedroom extends Model { protected $guarded = []; }