2016-05-03 14 views
0

Ich führe eine Abfrage, in der wünschenswert Ausgabe zuerst where Klausel anwenden, dann, nachdem ich rechts Join durchführen will.Ich habe diese Abfrage, aber es zuerst führen dann where.thank Sie für Sie Hilfe voraus.JOIN nach WHERE-Klausel in Laravel

Hier ist meine Abfrage

$friends = friend_list::where('friend_lists.user_id', '=', $id) 
         ->rightJoin('users as u1', 'u1.id', '=', 'friend_lists.user_id2') 
         ->where('friend_lists.user_id2','!=',$id)      
         ->where('u1.id','!=',$id) 
         ->orwhere('status',null) 
         ->get(); 

bearbeitet: I Freund Anfrage Abschnitt bin der Umsetzung.
In der Benutzertabelle enthält ... Benutzer (ID, Namen, .., ..) friend_list (Benutzer-ID, userid2, Status) in friend_list zeigt den Status mit anderen friend.I mit friend_list Sie gleich bei .wenn Status null ist dann gibt es keine Zeile für diesen Benutzer mit aktuellem user.so Status null ist, und es zeigt add friend .so Nullwert dafür richtig wichtig ist JOIN-Bedingung mit user table

+0

Can Bitte lass mich wissen, welche Art von Daten brauchst du? Und wie ist Ihre Datenbankstruktur? – Siddharth

+0

Ich habe die Frage bearbeitet –

+0

Die SQL-Anweisungen werden nicht in der Reihenfolge ausgeführt, dass Sie sie schreiben soweit ich weiß. – haakym

Antwort

1

ändern der WHERE zu einem anderen beitreten

$friends = friend_list::rightJoin('users as u1', function($join) { 
     $join->on('u1.id', '=', 'friend_lists.user_id2') 
       ->where('friend_lists.user_id', '=', $id); 
    }) 
    ->where('friend_lists.user_id2','!=',$id)      
    ->where('u1.id','!=',$id) 
    ->orwhere('status',null) 
    ->get();