我做了很多研究但仍然没有解决问题,希望你们中的一些人可以帮助我。
我有一张表Post
和一张表Comment
,其正常关系Post Has Many Comments
我为获得10条相关评论的帖子设置了以下查询:
Post::with('comments')->limit(10)->get();
它确实有效,但仍然不是我的最终结果,因为我希望将评论限制为5 对于每个帖子
到目前为止,我尝试使用此查询来限制我的评论,即使逻辑上它只会限制所有帖子的5条评论。事实上,我确实如此猜测。
Post::with(['comments' => function($comments){
$comments->limit(5);
}])->limit(10)->get();
也许有说服力这种查询是不可能的,但是如果使用2个不同的查询并合并结果我怎样才能使它工作?
任何形式的帮助都会非常感激。
由于
答案 0 :(得分:2)
解决方案在这里: http://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/
这样的事情: 返回$ this-> comments() - > latest() - > nPerGroup(' post_id',5);
答案 1 :(得分:0)
我认为你需要做的是限制关系中的帖子数量。
这样的事情可以做到:
public function comments()
{
return $this->hasMany('Comment')->limit(5);
}
虽然没有测试过,但它可能无法正常工作。
答案 2 :(得分:0)
请使用
$lines = \Category::where('status', \Category::STATUS_PUBLISH)
->with(['firstThreeComment'])
->get()
->map(function( $category ){
$category->firstThreeComment = $category->firstThreeComment->take(3);
return $category;
});