Здравствуйте!
Есть таблица БД с полем "slug". В миграции:
$table->string('slug');
Так как поле должно быть уникальным и генерироваться автоматически при добавлении новой записи, в модели использую мутатор:
public function setSlugAttribute($value) {
$this->attributes['slug'] = Str::slug(mb_substr($this->manufacture, 0, 60) . "-", "-");
}
Метод store в соответствующем контроллере:
public function store(Request $request)
{
$manufacture = Manufacture::create($request->all());
return redirect()->route('admin.manufactures.index');
}
При отправке формы поле 'slug' отправляется пустым и по идее должно до сохранения новой записи быть изменено этим мутатором. Но этого не происходит. Появляется в браузере такая ошибка:
SQLSTATE[HY000]: General error: 1364 Field 'slug' doesn't have a default value
(SQL: insert into `manufactures`
(`manufacture`, `description`, `meta_description`, `meta_keywords`, `country`)
values
(Производитель 2, описание, meta description, meta keywords, Россия))
Причем, как видно из ошибки, при массовом заполнении даже нет попытки сохранить значение поля 'slug', хотя в модели оно объявлено в массиве $fillable:
protected $fillable = [
'manufacture',
'slug',
'country',
'image',
'description',
'meta_description',
'meta_keywords',
];
P.S. В другом проекте на Laravel 5.7 ровно такой же мутатор отлично работает.