常规错误:1364 字段“user_id”没有默认值

2022-08-30 12:47:05

我正在尝试为当前用户分配user_id,但它给我这个错误

SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a 
default value (SQL: insert into `posts` (`updated_at`, `created_at`) 
values (2017-04-27 10:29:59, 2017-04-27 10:29:59))

这是我的方法

//PostController
Post::create(request([
        'body' => request('body'),
        'title' => request('title'),
        'user_id' => auth()->id()
    ]));

用这些填充物

//Post Model
protected $fillable = ['title', 'body', 'user_id']

但是,此方法可以完成工作

//PostController
auth()->user()->publish(new Post(request(['title' ,'body']))); 

//Post Model
public function publish(Post $post)
{
    $this->posts()->save($post);
}

任何想法为什么这个失败?enter image description here


答案 1

您需要更改数据库严格模式。对于禁用,请按照以下步骤操作

  1. 打开config/database.php

  2. 找到将值 true 更改为 false,然后重试'strict'


答案 2

因此,在再次检查代码后,我发现了错误。我想知道为什么没有人注意到这一点!在我写的上面的代码中

Post::create(request([  // <= the error is Here!!!
    'body' => request('body'),
    'title' => request('title'),
    'user_id' => auth()->id()
]));

实际上,请求函数不需要扭曲创建函数的主体。

// this is right
Post::create([
    'body' => request('body'),
    'title' => request('title'),
    'user_id' => auth()->id()
]);

推荐