我正在尝试将每位作者的每篇帖子以及每位作者的评论也退还给我。 这就是我所做的:
控制器:
$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');
}
这将返回每个帖子及其作者和评论,但不返回评论的作者。
我还应该做什么?
答案 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);