【问题标题】:How to associate comments to users on Laravel?如何将评论与 Laravel 上的用户关联?
【发布时间】:2018-02-15 15:50:22
【问题描述】:
public function store(Post $post)
{
    $this->validate(request(), ['body' => 'required|min:2']);

    $post->addComment(request('body'));

    return back();
}

这是我的代码

我遇到了这个错误 SQLSTATE[HY000]: 一般错误: 1364 字段 'user_id' 没有默认值 (SQL: 插入comments (body, post_id, updated_at, created_at) 值 (ewrtyuttrew, 1 , 2018-02-15 15:44:17, 2018-02-15 15:44:17))

【问题讨论】:

  • 正确的方法是通过在模型中定义关系来解决这个问题。第二个答案是正确的。第一个不是 Laravel 解决方案。

标签: laravel post comments


【解决方案1】:

您需要添加手动创建评论的用户。例如:

public function addComment(string $body)
{
    $this->comments()->create(['body' => $body, 'user_id' => auth()->id()]);
}

【讨论】:

    【解决方案2】:

    在您的 User 模型中,您可以将关系定义为:

    public function comments() { 
        return $this->hasMany(Comment::class);
    }
    

    因此,如果用户是登录用户,那么您可以使用 Auth 外观检索它:

    $user = Auth::user();
    

    那么你可以简单地做:

    $user->comments()->save(new Comment(request('body'));
    

    请注意,您必须在 Comment 模型上设置“可填充”字段才能允许动态创建。

    【讨论】:

      【解决方案3】:

      字段'user_id'

      打开phpmyadmin,然后打开cmets表

      Field 'user_id' => 自动递增和主键添加

      试试这个我解决了这个类型的问题,谢谢

      【讨论】:

        猜你喜欢
        • 2017-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多