updateOrCreate — Исключение массового назначения в Laravel

Я работаю над CRUD частью моей системы. Пользователи могут обновлять ключевые слова. То, что я хотел бы сделать, похоже на INSERT IGNORE MySQL заявление.

Я нахожусь в цикле foreach и пытаюсь обновить ключевые слова, однако я получаю

Массовое назначение исключений

ошибка

Мой текущий код выглядит следующим образом: я делаю что-то особенно неправильно?

// Save The Keywords...
$kwords = Input::get('keywords');

foreach($kwords as $key => $value)
{
// Save The Keywords...
Keywords::updateOrCreate( array('pack_id'=> $pack->pack_id, 'keyword_title' => $value));
}

ура

4

Решение

Laravel будет жаловаться, если вы попытаетесь массово назначить поля, не указанные в определении класса модели.

Это связано с тем, что злонамеренный пользователь может попытаться назначить поля в вашей модели (т.е. добавить некоторые параметры в форму), которые не должны обновляться пользователями приложения.

Чтобы иметь возможность массового присвоения полей, вы должны указать все поля, которые вы хотите «массово назначить» в вашей модели:

class Keywords extends Eloquent {

protected $fillable = array('pack_id', 'keyword_title');

}

В качестве альтернативы, вы можете сделать некоторые поля защищенными (не назначаемыми по массе), а все остальные поля будут назначаться по массе:

class Keywords extends Eloquent {

protected $guarded = array('guarded_field');

}

если вы используете Laravel 4, проверьте Вот для получения дополнительной информации

4

Другие решения

Вам необходимо определить свойства $ fillable или $ guarded в вашей модели. Если вы хотите, чтобы все, кроме id, было заполнено, вот как вы можете это определить:

class Keywords extends Model {
protected $guarded = array('id');
}
2

По вопросам рекламы [email protected]