2017-02-09 40 views
1

我有一個在數據庫中的意見表,我試圖更新其中的記錄(或創建它,如果它不存在)與此代碼:Laravel更新或創建一般錯誤字段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'];