Laravel 使用查询生成器左联接行
Laravel left join Raw usning Query Builder
有没有办法使用查询生成器 left join
Laravel 中的原始语句?
我有 table A
:
a_id | name |
-----------------
1 | Foo |
2 | Bar |
和table B
:
a_id | status |
---------------------
1 | true |
2 | false |
1 | false |
2 | true |
2 | false |
和table 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 语句做这样的事情很简单,但我必须用查询生成器来做。
我自己找到的:
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
是连接两个以上表的关键点。
有没有办法使用查询生成器 left join
Laravel 中的原始语句?
我有 table A
:
a_id | name |
-----------------
1 | Foo |
2 | Bar |
和table B
:
a_id | status |
---------------------
1 | true |
2 | false |
1 | false |
2 | true |
2 | false |
和table 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 语句做这样的事情很简单,但我必须用查询生成器来做。
我自己找到的:
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
是连接两个以上表的关键点。