Mình có 3 bảng dữ liệu:
Post: PostId , Title , Content
Comment: CommentId , UserId , PostId , Message
Like: LikeId , UserId , PostId
Mình đang muốn lấy ra 5 Post có số lượng comment và like lớn nhất. Mọi người giúp mình với
Viết câu trả lời
Bạn dùng query này xem
SELECT posts.name, COUNT(comments.id) as num_cmt FROM `posts` LEFT JOIN comments ON posts.id = comments.post_id GROUP BY posts.name ORDER BY num_cmt DESC
Mình ví dụ dùng Eloquent nhé, cần có 3 models là Post, Comment và Like với các relationship, ví dụ:
class Post extends Eloquent
{
public function comments()
{
return $this->hasMany('App\Comment');
}
Để list ra 5 posts có số comments nhiều nhất thì:
$posts = Post::withCount('comments')->sortByDesc('posts_count')->take(5);
03/08/2016 21:32
Xử lý whereHas của eloquent xem, callback xét where của comment và like.