2017-04-30 2 views
0

Hier ist die Abfrage Ich verwende Ergebnisse eines Lagers zu erhalten:Laravel: Wie kann ich einer verwandten Tabelle beitreten, um orderBy korrekt zu verwenden?

$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'); 
    }]); 

Aber die Ergebnisse sind nicht richtig bestellt zu werden. Ich habe gelernt, dass ich join the tables muss so jetzt meine Frage wie folgt aussieht:

$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'); 

Aber das scheint mir die gleiche Sache zurückkommen. Ich habe das Gefühl, dass meine Ergebnisse mit meiner ersten Abfrage genauer sind, aber die Reihenfolge ist falsch.

Alle Vorschläge werden sehr geschätzt!

Antwort

0

erstellen Fremdschlüssel in der Sekundärtabelle und die Join-Tabelle wie folgt:

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(); 
Verwandte Themen