Symfony / Doctrine COUNT Group By和Left JOIN

时间:2016-05-27 14:17:18

标签: php symfony doctrine-orm

我通过ManyToOne双向关系在symfony join中有两个表。文章和日期。

我想总结同一个a.id的所有d.quantity我怎么能这样做?

我试试:

在我的表(日期)中,我有:

+----------------------------
| id   | a.id  |   quantity
+----------------------------
| 1    | 4     |      1 
| 2    | 4     |      3
| 3    | 6     |      4
| 4    | 5     |      6
| 5    | 4     |      15 
----------------------------

$allIndispo = $qb
    ->select('a2.id')
    ->leftJoin('a2.dates', 'd')
    ->where('(a2.quantity - COUNT(d.quantity)) <= 0')
    ->groupBy('d.quantity')
    ->orderBy('a2.id', 'ASC');

2 个答案:

答案 0 :(得分:2)

您可能需要使用HAVING而不是WHERE,并按a.id分组,而不是数量分组,以及项目(在选择中)结果。

$allIndispo = $qb
    ->select('a2.id, SUM(a2.quantity) as total')
    ->leftJoin('a2.dates', 'd')
    ->groupBy('a2.id')
    ->having('(a2.quantity - COUNT(d.quantity)) <= 0')
    ->orderBy('a2.id', 'ASC');

答案 1 :(得分:0)

您应该阅读this

AsyncHttpClient