2016-08-04 12 views
0

ich eine Tabelle habe Users mit diesen Spalten:Laravel rohe Unterabfrage derselben Tabelle

 $users = User::select(['id','name','level','parent','updated_at']) 
    ->where('level','>',1) 
    ->get(); 

Ausgang:

 id name  level  parent updated_at 
     ----+---------+-----------+--------+------------- 
     12 Jhon  1   0  2016-02-01 
     99 Carl  2   12  2016-02-01 

Dann: Ich versuche, dies für die Show Spalte parent wie Name id zum Beispiel verbunden ist, in zweite Reihe, Show Jhon ersetzt 12.

ich diesen Code versucht ... Jede Hilfe zu lesen ...

 $users = User::select(['id','name','level', 
    DB::raw("SELECT * FROM users WHERE id = users.parent) 
    'updated_at']) 
    ->where('level','>',1) 
    ->get(); 

Erwartete Ausgabe:

 id name  level  parent updated_at 
     ----+---------+-----------+--------+------------- 
     12 Jhon  1     2016-02-01 
     99 Carl  2   Jhon  2016-02-01 

Antwort

0

Sie wollen einen leftJoin den übergeordneten Namen zu bekommen:

$users = User::select(['users.id','users.name','users.level', 'parent.name') 
->leftJoin('users AS parent','users.parent','=','parent.id') 
->where('users.level','>',1) 
->get(); 
Verwandte Themen