2017-12-18 19 views

답변

1

상단을 얻으려면 - 관계없이, 나는 this-

$favorites = DB::table('favorites') 
            ->join('trails', 'trails.id', '=', 'favorites.trail_id') 
            ->select('favorites.trail_id', 'trails.name') 
            ->get(); 
같은 것을

먼저 하나가되는 '산책로'테이블과 또 다른 하나는 '즐겨 찾기'를 넣고있다 시도 10 개의 흔적을 사용하여 집계 함수를 사용하여 각 흔적의 사용자 수를 계산하고 계산 결과를 기반으로 결과를 정렬 한 다음 1

만 선택하면됩니다.
$favorites = DB::table('trails as t') 
       ->select('t.id', 't.name') 
       ->join('favorites as f', 't.id', '=', 'f.trail_id') 
       ->groupBy('t.id') 
       ->groupBy('t.name') 
       ->orderByRaw('COUNT(DISTINCT f.user_id) DESC') 
       ->limit(10) 
       ->get(); 
+0

점점 쿼리 예외 –

+0

SQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 1055 'trailboard.t.name'이 GROUP BY에 없습니다 (SQL :'t'.'id','t' 선택). 'name'은'trails'에서't' inner join'f'를't''''''''''''''''''는't'''''''는 COUNT (DISTINCT f.user_id) DESC 제한 10) –

+0

@ Md.RashedulHasan 나는 내 대답을 업데이트했습니다. 이름은 group by 절에 없었으며 5.7 또는'only_full_group_by' 모드가 활성화되어있을 수 있습니다. –