У меня есть таблица представлений в базе данных, и я пытаюсь обновить запись в ней (или создать ее, если она еще не существует) с помощью этого кода:
$ar = ['number_of_views' => $number_of_views['number_of_views']+1, 'post_id' => $post->id]; App\View::updateOrCreate(['id' => $number_of_views['id']], $ar);
К сожалению, это возвращает ошибку:
SQLSTATE [HY000]: Общая ошибка: 1364 Поле 'post_id' не имеет значения по умолчанию (SQL: insert into
views
(number_of_views
,updated_at
,created_at
) значения (1, 2017-02-09 14:41:19, 2017- 02-09 14:41:19))
Похоже, что он не распознает 'post_id' => $post->id
следовательно, возвращает ошибку, как если бы она не была установлена вообще.
Эта ошибка появляется только в том случае, если запись должна быть создана, а не если она уже существует.
Вам нужно добавить поле post_id
к атрибуту fillable для модели для массового назначения следующим образом:
protected $fillable = ['post_id', 'number_of_views'];