2016-08-22 5 views
0

Ich muss eine Zeile auswählen und Werte aus dieser Zeile in einer Abfrage verwenden.Auswahl aus der gleichen Tabelle mit dem Ergebnis der Tabelle?

So etwas wie, wählen Sie * von den Benutzern, wo id = 1, wählen Sie * von den Benutzern, wo ID = 1 und permission = Benutzer mit der Berechtigung von id 1

Deshalb möchte ich mit der ID von 1, um einen Benutzer zu erhalten Wählen Sie dann alle anderen Zeilen aus derselben Tabelle aus, die nicht die ID 1 haben und die gleiche Berechtigung wie ID 1 haben. Ich kenne die Berechtigung erst, wenn ich die erste Zeile ausgewählt habe.

Ist dies in einer Abfrage eloquent möglich?

+0

User :: whereNotIn ('id', 1) -> where ('Erlaubnis', '=', User :: find (1) -> Erlaubnis) -> get(); – mydo47

+0

Der Benutzer hat eine Beziehung mit der Berechtigungstabelle oder Benutzertabelle haben eine Spaltenberechtigung? – DsRaj

Antwort

1

Sie können eine Unterabfrage wie folgt tun:

Users::where('permission', function($q) 
{ 
    $q->from('users') 
     ->select('permission') 
     ->where('id', '=', 1); 

})->where('id', '!=', 1); 
+0

Das ist großartig, nur eine Frage, mit der -> von ('Benutzer') Unterabfrage, um dies mit der Modellinstanz und nicht mit dem Tabellennamen zu spezifizieren. – panthro

+0

hmm ... Sie können wie $ q-> von ((neue App \ Models \ Benutzer) -> getTable()) tun, wenn Sie es nicht hart codieren möchten – SteD

+0

Spot auf, danke. – panthro

Verwandte Themen