有没有办法在Laravel中使用查询生成器left join
原始语句?
我有表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 :(得分: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
是关键点。