2015-02-01 2 views
-1

Laravel Queries에서 투표별로 게시물을 정렬하려면 어떻게해야합니까? ->count()을 사용하여 계산하는 방법을 알고 있지만 다른 테이블에 합류하는 동안이를 통합하는 방법을 알지 못합니다.Laravel Queries에서 투표자별로 게시 방법

$posts = DB::table('posts') 
       ->join('votes', 'votes.post_id', '=', 'posts.id') 
       ->select('posts.id', 'posts.description', 'posts.user_id', 'posts.created_at') 
       ->where('posts.created_at', '>=', date('Y-m-d H:i:s',time()-86400)) 
       ->paginate(10); 

나는 어떻게 주문 해야할지 모르겠다.

답변

1

당신이 (많은 한) 각 게시물에 대한 개별 투표를 저장하고 가정 : Laravel의 PAGINATE 클래스가 제대로 구현되는 것을

$posts = DB::table('posts') 
       ->join('votes', 'votes.post_id', '=', 'posts.id') 
       ->select('posts.id', 'posts.description', 'posts.user_id', 'posts.created_at', DB::raw('COUNT(posts.id) AS total') 
       ->where('posts.created_at', '>=', date('Y-m-d H:i:s',time()-86400)) 
       ->groupBy('posts.id') 
       ->orderBy(DB::raw('total'), 'desc') 
       ->paginate(10); 

참고하고 GROUPBY와 함께 사용하면, 결과의 많은 수에 질식 수 .

+0

감사합니다. 작동합니다. 그러나 이것으로는 부족합니다. 투표가없는 게시물을 표시하지 않습니다. 나는 대부분의 표에서 최저 표 또는 무득점으로 만들고 싶다. – user3569641