你一定看过以下功能(在facebook上),一篇带有一些评论的帖子,每个评论都有一个类似的计数器。
https://img4.hostingpics.net/pics/67853820170616003640LaravelNewsAccueil.png
在laravel中它会像
所以现在,我希望收到10条评论的帖子,每个评论都有类似的计数器
发布::与( '评论') - > withCount( 'comments.likes') - >取(10) - >得到();
这根本不起作用......
发布::与( '评论') - > withCount( '评论') - >取(10) - >得到();
确实如此,但这会计算每篇帖子的所有评论,我想在每篇文章中按照评论计算所有评论。
答案 0 :(得分:5)
试试这个
Post::with('comments' => function($query){
$query->withCount('likes')
}])->take(10)->get();
答案 1 :(得分:1)
这将起作用。
Post::with('comments' => function($query){
$query->withCount('likes');
}])->take(10)->get();
您可以按$post->comments->likes_count;
答案 2 :(得分:1)
关于此问题的其他答案是正确的,但似乎其中有错字。他们都忘记了'comments'之前的“ [”开头,因此正确的代码段如下:
Post::with(['comments' => function($query){
$query->withCount('likes');
}])->take(10)->get();
答案 3 :(得分:0)
我做出假设CommentLike
代表comment_likes
表
Post::with('comments' => function($query){
$query->select('comment_likes.*')
->join('comments', 'comments.id', '=', 'comment_likes.comment_id')
->groupBy('comments.id')
->havingRaw('sum(comment_likes.id) as likes')
}])->take(10)->get();