php - Laravel updateOrCreate 一般报错字段post_id不存在

标签 php mysql sql laravel eloquent

我在数据库中有一个 View 表,我正在尝试使用以下代码更新其中的一条记录(如果它尚不存在,则创建它):

$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 因此返回一个错误,就好像它根本没有设置一样。

只有在要创建记录时才会出现此错误,如果记录已经存在则不会出现。

最佳答案

您需要将 post_id 字段添加到模型的 fillable 属性中以进行批量分配,如下所示:

protected $fillable = ['post_id', 'number_of_views'];

关于php - Laravel updateOrCreate 一般报错字段post_id不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42140131/

相关文章:

php - 如果 ID 存在则更新行,否则插入

php - 只喜欢一次帖子/评论,laravel

php - apache访问日志高字节大小返回给客户端

php写入文件将单引号转为双引号

php - 从其他表中获取值以插入到相关表中?

MYSQL触发器创建id

sql - 在表格的每一行中找到最小值的优雅方法是什么?

PHP:如何缩短网址+从数据库中获取数据

sql - 在 SQL (PostgreSQL) 中选择动态的几行

mysql - 使用 SQL 匹配日期