2017-04-30 1 views
0

는 여기에 내가 캠프의 결과를 얻기 위해 사용하고있는 쿼리입니다 :Laravel : orderBy를 올바르게 사용하기 위해 관련 테이블에 어떻게 가입 할 수 있습니까?

$camp = Camp::where('camps.id', $camp_id) 
    ->with(['athletes' => function ($q) use ($camp_id) { 
    $q->with(['kickoffs' => function ($q) use ($camp_id) { 
     $q->where('camp_id', $camp_id); 
     $q->orderBy('id', 'desc'); 
    }]); 
    $q->with(['kickoff_results' => function ($q) use ($camp_id) { 
     $q->where('camp_id', $camp_id); 
     $q->orderBy('score', 'desc'); 
    }]); 

그러나 결과는 제대로 정렬되지 않아요. 나는 이제 내 쿼리는 다음과 같습니다 join the tables해야한다는 것을 배웠습니다 :

$camp = Camp::where('camps.id', $camp_id) 
    ->with(['athletes' => function ($q) use ($camp_id) { 
    $q->with(['kickoffs' => function ($q) use ($camp_id) { 
     $q->where('camp_id', $camp_id); 
     $q->orderBy('id', 'desc'); 
    }])->join('kickoff_results', 'athletes.id', '=', 'kickoff_results.athlete_id') 
     ->orderBy('kickoff_results.score', 'desc'); 

그러나 이것은 나에게 같은 일을 반환 할 것으로 보인다. 내 첫 쿼리로 내 결과가 더 정확하지만 주문이 잘못되었다고 느낍니다.

모든 의견을 매우 높이 평가합니다. 다음과 같이

답변

0

테이블을 보조 테이블 에 외래 키를 생성하고 가입 :

DB::table('leads')->select('sec_tbname.sec_tbfk','sec_tbname.join_pm','prm_tbname.prm_tbpm') 
      ->join('pm_tbname','sec_tbname.sec_tbfk','=','pm_tbname.id') 
      ->get(); 
관련 문제