Не сохраняется поле в БД

Август, 2022

mass assignment, fillable

# Проблема

Поле не сохраняется в базе данных без ошибок или запрос завершается ошибкой:

General error: 1364 Field 'xxx' doesn't have a default value

При этом поле не пустое и корректно передано.

# Причина

По умолчанию модель защищена от массового назначения полей, например:

1Post::create([
2 'title' => $title,
3 'content' => $content,
4]);
5 
6// or
7$post->fill([
8 'title' => $title,
9 'content' => $content,
10]);
11 
12// or
13$post->update([
14 'title' => $title,
15 'content' => $content,
16]);
highlight by torchlight.dev

При таком сохранении данных необходимо явно разрешать имена полей.

# Решение

Указать необходимые поля в свойстве модели $fillable согласно документации

1class Post
2{
3 protected $fillable = [
4 'title',
5 'content',
6 ];
7}
highlight by torchlight.dev

или установить значения полей вручную:

1$post = new Post();
2$post->title = $title;
3$post->content = $content;
4$post->save();
highlight by torchlight.dev