select子句中symfony2中select子句的子查询

时间:2013-10-03 08:14:11

标签: symfony doctrine-orm subquery

我想在存储库中使用symfony2查询构建器来创建以下查询:

SELECT c.name,
       (
         SELECT COUNT(1)
         FROM product
         WHERE product.cat_id = c.id
       ) products
FROM category c
ORDER BY category.id ASC

我是否可以将查询构建器用于此目的,以及如何构建查询构建器? 感谢

1 个答案:

答案 0 :(得分:1)

我认为这里不需要子查询。只需使用countgroup by

即可实现

假设您已在ProductCatergory之间定义了正确的关系,则此DQL查询应该有效。

将其包含在您的类别存储库中

$categories = $this->createQueryBuilder('c')
                    ->select('c.name,count(p.id)')
                    ->leftJoin('c.products','p')
                    ->groupBy('c.id')
                    ->getQuery()
                    ->getResult();