Laravel-加入评论,帖子,用户

时间:2018-08-03 22:00:07

标签: php laravel

我正在尝试将每位作者的每篇帖子以及每位作者的评论也退还给我。 这就是我所做的:

控制器:

$posts = Post::with('comments', 'user')->latest()->paginate(3);

帖子模型:

public function comments() {
    return $this->hasMany('App\Comment');
}

public function user() {
    return $this->belongsTo('App\User');
}

评论模型:

public function users() {
    return $this->hasOne('App\User');
}

这将返回每个帖子及其作者和评论,但不返回评论的作者。
我还应该做什么?

2 个答案:

答案 0 :(得分:0)

我不会进一步探讨建立雄辩的关系。希望您已正确设置。

让我们关注查询:

Post::with('comments', 'user') -> Returns post with comments and who created it. Which is correct but now what you want.

更新您的代码

$posts = Post::with(['user', 
    'comments' => function($q) {
        $q->with('user'); //Rename users to user in eloquent model. }
    ])->latest()->paginate(3);

注意:未经测试。试试吧。

答案 1 :(得分:0)

您的评论模型:

public function users() {
    return $this->hasOne('App\User');
}

表示数据库中的用户条目将具有一个comment_id字段。但是相反,它实际上应该在user_id数据库表中有一个comments字段:

public function user() {
    return $this->belongsTo('App\User');
}

现在您也可以渴望加载评论的作者:

$posts = Post::with('comments.user', 'user')->latest()->paginate(3);