我试图检索(分页)帖子列表,并在一个Eloquent查询语句中包含他们最近的评论。帖子和评论通过一对多关系连接起来。
这是我的尝试:
Post::with(['comments' => function ($query) {
$query->orderBy('created_at', 'asc')->take(3);
}])->simplePaginate(15);
但是,它只检索 3条评论,而不是每篇帖子3条评论。
答案 0 :(得分:0)
更新
看来你不能用1个查询来做 您仍然可以在父模型中使用此函数,称为“lastComments”:
function lastComments()
{
return $this->hasMany('App\Post', 'post_id')->orderBy('created_at')->take(3);
}
您使用正常的雄辩代码加载帖子:
Post::simplePaginate(15);
在视图页面中,您将以这种方式显示评论:
@foreach($post->lastComments as $comment)
<!-- ... -->
@endforeach
答案 1 :(得分:0)
加入表格ID是必要的 试试这个:
Post::with(array('comments'=>function($query){
$query->select('id as commentid','comment')->orderBy('created_at', 'asc')->take(3);
}))->simplePaginate(15);
答案 2 :(得分:0)
您需要在$with
模型中设置App\Post
变量:
protected $with = ['lastComments'];
这样,只要您获取帖子,Laravel就会自动加载评论。