2016-11-30 3 views
0

Привет Я хочу запросить от 3 таблицыLaravel красноречивым связь с 3 таблицы

пользователь:

+----+-----------+ 
| 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   | 
+----+-----------+-------------+ 

Образование

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

Как запросить с Laravel Красноречивый, чтобы получить последние Пользователь порядок образования по DESC Уровень ожидается:

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

В обычном запросе: выберите идентификатор, имя, (выберите E.name от образования E внутреннее соединение History_eductaion HE на E.id = HE.education_id где HE.userId = U.id limit 1 order by E.level DESC) last_education от USER U

Как перевести на laravel красноречие?

ответ

0

Быстрый ответ с помощью конструктора запросов - ваш запрос необходимо немного изменен, чтобы соответствовать имена таблиц и столбцов, как указано в вашем вопросе:

$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(); 
Смежные вопросы