2016-07-10 5 views
1

orderBy가 작동하지 않는 이유는 nbr_votes가 내림차순으로 정렬하지 않기 때문입니다.Laravel 쿼리 빌더 by by left join with

$all_players = DB::table('example_players')->leftJoin('example_votes', 'example_votes.from_player_id', '=', 'example_players.id') 
              ->select('example_players.id', 'example_players.name', 'example_players.display_name', 'example_players.role', 'example_players.picture', DB::raw("sum(case example_votes.vote when 'like' then 1 else 0 end) as nbr_votes")) 
              ->orderBy('nbr_votes', 'desc')           
              ->groupBy('example_players.id')           
              ->get(); 

편집 문제가 해결됨 from_player_id 열을 다른 것과 혼동하고있었습니다. 도와 주셔서 감사합니다 :)

답변

0

결과를 주문하기 전에 그룹으로 생각하십시오.

$all_players = DB::table('example_players')->leftJoin('example_votes', 'example_votes.from_player_id', '=', 'example_players.id') 
              ->select('example_players.id', 'example_players.name', 'example_players.display_name', 'example_players.role', 'example_players.picture', DB::raw("count(example_votes.id) as nbr_votes")) 
              ->groupBy('example_players.id') 
              ->orderBy('nbr_votes', 'desc')                 
              ->get(); 
+0

안녕하세요, 답변 해 주셔서 감사합니다. 그러나 나는 이미 그것을 시도하고 그것은 무언가를 변화시키지 않는다. – Alex1

0
$all_players = DB::table('example_players')->leftJoin('example_votes', 'example_votes.from_player_id', '=', 'example_players.id') 
              ->select('example_players.id', 'example_players.name', 'example_players.display_name', 'example_players.role', 'example_players.picture', DB::raw("count(example_votes.id) as nbr_votes")) 
              ->groupBy('example_players.id')           
              ->orderBy(DB::raw("count(examples_votes.id)"),'desc')           
              ->get(); 

ORDERBY 당신은 같은과 함께 필드를 지정한 이름을 알지 못하기 때문입니다.

+0

-> orderBy (DB :: raw ("count (overwatch_votes.id)"), 'desc') 질서가 변경되지만 overwatch_votes.id desc – Alex1

+0

에 의해 변경되지 않습니다. 쿼리에 overwatch_votes 테이블이 없기 때문입니다. 먼저 주문하기 위해 테이블에 가입해야합니다. – da1lbi3

+0

코드를 변경했습니다. – da1lbi3