一般错误:1364 字段 'user_id' 没有默认值

新手上路,请多包涵

我正在尝试将 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);
}

知道为什么会失败吗? 在此处输入图像描述

原文由 Mohammed Sabbah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 837
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()
]);

原文由 Mohammed Sabbah 发布,翻译遵循 CC BY-SA 4.0 许可协议

$table->date('user_id')->nullable();

在您的文件 create_file 中,必须启用 null 选项。

原文由 Victor Manuel Hernandez 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题