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

Drop Images

3 Bình luận

hoangthong avatar

Xử lý whereHas của eloquent xem, callback xét where của comment và like.

minhnhat9 avatar

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
mquan avatar

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);

duongminh92 avatar

Cảm ơn bạn, mình đang gặp vấn đề là tính tổng trên 2 bảng comment và like sau đó đưa ra con số lớn nhất :(