2017-04-30 42 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();