2016-07-21 22 views
1

Ich habe SQL-Abfrage mit, um nächsten kommen (zwei JOIN ‚s verschachtelt sind in LEFT JOIN):Wie verschachtelte Joins mit dem Laravel Query Builder geschrieben werden?

SELECT * 
FROM mytable 
LEFT JOIN table1 
    JOIN table2 ON table2.id = table1.document_id 
    JOIN table3 ON table3.content_id = table2.id 
ON table1.link_id = mytable.link_id 

Wie diese Abfrage mit builder Laravel Abfrage schreiben?

Mein Weg:

$query = Mytable::select('*') 
    ->leftJoin(DB::raw('table1 
     JOIN table2 ON table2.id = table1.document_id 
     JOIN table3 ON table3.content_id = table2.id 
    '), 
    'table1.link_id', '=', 'mytable.link_id'); 

Es funktioniert, aber es ist eine Möglichkeit, es ohne DB :: raw() zu tun? Vielleicht mit $join->nest()?

Antwort

0

Die Joins sind nicht verschachtelt sie sind nur die Anzahl der lebenden Datensätze zu begrenzen verwendet wird.

$query = Mytable::select('*') ->leftJoin('table1', 'table1.link_id', '=', 'mytable.link_id') ->join('table2', 'table2.id', '=', 'table1.document_id') ->join('table3 ', 'table3.content_id', '=', 'table2.id');

+0

Dies ist keine Lösung. Diese Abfrage wird sieht aus wie SELECT * FROM mytable LEFT JOIN tabelle1 ON table1.link_id = mytable.link_id JOIN Tabelle2 ON table2.id = table1.document_id JOIN table3 ON table3.content_id = table2.id' – mnv