2017-02-09 2 views
1

У меня есть таблица представлений в базе данных, и я пытаюсь обновить запись в ней (или создать ее, если она еще не существует) с помощью этого кода:Laravel updateOrCreate общее поле ошибки post_id не существует

$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]: General error: 1364 Field 'post_id' doesn't have a default value (SQL: insert into views (number_of_views , updated_at , created_at) values (1, 2017-02-09 14:41:19, 2017-02-09 14:41:19))

кажется, что это не признавая 'post_id' => $post->id, следовательно, возвращается ошибка, как если бы она не была установлена ​​на всех.

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

+1

Вы уверены, что '$ пост-> id' имеет значение при создании новой строки? – Jerodev

+0

Да, я попытался вернуть его перед оператором, и ему назначено значение 8 – DomeWTF

+0

Я попытался установить его на 8 напрямую, но он дает ту же ошибку – DomeWTF

ответ

0

Вы должны добавить post_id поля в нефтеналивной атрибут на модели для массового назначения, как это:

protected $fillable = ['post_id', 'number_of_views']; 
Смежные вопросы