Я пытаюсь сохранить несколько строк в таблицу, однако мне Mass Assignment Error
,
Ошибка: 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();
}
Моя структура базы данных:
так что нет неправильного правописания. Crit_id_id происходит от переменной из недавно сохраненных критериев (см. Код выше для цикла).
Любая помощь будет принята с благодарностью.
Чтобы иметь возможность устанавливать свойства, передавая их конструктору модели, вам нужно перечислить все необходимые свойства в $fillable
массив. Как уже упоминалось в Документы
class Bedroom extends Eloquent {
protected $fillable = array('criteria_id', 'bedroom');
}
Также вы можете использовать create
метод, если хотите. Создает новую модель и сохраняет ее напрямую:
foreach(Input::get('bedrooms') as $bedroom){
$new_bedroom=array(
'criteria_id' => $criteria->id,
'bedroom' => $bedroom,
);
$bedroom = Bedroom::create($new_bedroom);
}
обратный из того, что сказал Лукас, «охраняется». Вместо полей «белого списка» вы можете просто объявить, какие из них охраняются.
Например:
class Bedroom extends Model
{
protected $guarded = ['id'];
}
Это было более полезно для меня, потому что я не заботился о большинстве областей.
Получено из документации по Laravel 5.2, но я предполагаю, что это работает на старых версиях.
Чтобы разрешить любые поля, вы можете просто предоставить пустой массив:
class Bedroom extends Model
{
protected $guarded = [];
}