Laravel离开了加入Raw usning Query Builder

时间:2015-11-02 09:36:36

标签: laravel left-join query-builder

有没有办法在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来完成。

1 个答案:

答案 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是关键点。