2015-11-02 6 views
0

Есть ли способ для left join необработанное заявление в Laravel с помощью Query Builder?Laravel left join Raw usning Query Builder

У меня есть таблица A:

a_id | name | 
----------------- 
    1  | Foo | 
    2  | Bar | 

и стол B:

a_id | status | 
--------------------- 
    1  | true | 
    2  | false | 
    1  | false | 
    2  | true | 
    2  | false | 

и стол C:

a_id | status | 
--------------------- 
    1  | true | 
    2  | true | 
    2  | false | 

Тогда A left join B left join C РЕКОМЕНДУЕМЫМ результаты:

a_id | b_count | c_count 
--------------------------------- 
    1  |  2  |  1 
    2  |  3  |  2 

Я знаю, что такое простое дело в чистом выражении SQL, но я должен сделать это с помощью Query Builder.

ответ

0

Я нашел его сам:

Model::selectRaw(' 
    A.a_id, 
    count(DISTINCT B.a_id) AS b_count, 
    count(DISTINCT C.a_id) AS c_count 
') 
    ->leftjoin('B', 'B.a_id', '=', 'A.a_id') 
    ->leftjoin('C', 'C.a_id', '=', 'A.a_id') 
    ->groupby('A.a_id'); 

Использование DISTINCT было ключевым моментом в этом случае соединения более двух таблиц.

Смежные вопросы