2016-11-30 19 views
0

Hallo ich aus 3 Tabelle abfragen wollenLaravel eloquent Beziehung mit 3 Tabelle

Benutzer:

+----+-----------+ 
| id | name | 
+----+-----------+ 
| 1 | Denny  | 
| 2 | Agus  | 
| 3 | Dini  | 
| 4 | Angel  | 
+----+-----------+ 

History_Education

+----+-----------+-------------+ 
| id | userId | educationId | 
+----+-----------+-------------+ 
| 1 | 1  | 1   | 
| 2 | 1  | 2   | 
| 3 | 2  | 1   | 
| 4 | 2  | 2   | 
+----+-----------+-------------+ 

Bildung

+----+-----------+----------+ 
| id | level | Name | 
+----+-----------+----------+ 
| 1 | 1   | SD  | 
| 2 | 2   | SMP | 
| 3 | 3   | SMA | 
| 4 | 4   | S1  | 
+----+-----------+----------+ 

Wie mit Laravel abfragen Eloquent, um das Neueste zu bekommen Benutzerschulung, um von Stufe DESC erwartet:

+----+-----------+----------------------+ 
| id | Name | Latest_Education | 
+----+-----------+----------------------+ 
| 1 | Denny  | SMP    | 
| 2 | Agus  | SMP    | 
| 3 | Dini  | -     | 
| 4 | Angel  | -     | 
+----+-----------+----------------------+ 

Im normalen Abfrage: select id, name, (wählen E.name von Bildung E inneren History_eductaion HE auf E.id = HE.education_id wo HE.userId beitreten = U.id Limit 1 Bestellung von E.level DESC) next_education von USER U

Wie zu Laravel eloquent übersetzen?

Antwort

0

Die schnelle Antwort ist den Query Builder verwenden - Ihre Abfrage benötigt geändert wird leicht die Tabellennamen und Spalten passen, wie in Ihrer Frage aufgeführt:

$result = DB::table('user') 
    ->select([ 
     'id', 
     'name', 
     DB::raw("(select E.name from Education E inner join History_Education HE on E.id = HE.educationId where HE.userId = user.id order by E.level DESC limit 1) as latest_education") 
    ]) 
    ->get(); 
Verwandte Themen