Doctrine orm 原则2如何从联接中求和,但按2列分组

Doctrine orm 原则2如何从联接中求和,但按2列分组,doctrine-orm,doctrine,Doctrine Orm,Doctrine,我使用Symfony和Doctrine Querybuilder返回订单列表,其中包含每个订单中所有产品的计数。这意味着订单和OrderProducts之间存在1:n关系OrderProducts表存储OrderID和每个产品的数量。如果我执行groupBy o.orderId,那么我会得到正确的总和,但是我不会得到属于orderId的所有orderProducts的数据,因此如果orderProducts表中有两种不同的产品,那么我会得到数量:2,但只有一种产品的数据,所以我需要按oi.ord

我使用Symfony和Doctrine Querybuilder返回订单列表,其中包含每个订单中所有产品的计数。这意味着订单和OrderProducts之间存在1:n关系OrderProducts表存储OrderID和每个产品的数量。如果我执行groupBy o.orderId,那么我会得到正确的总和,但是我不会得到属于orderId的所有orderProducts的数据,因此如果orderProducts表中有两种不同的产品,那么我会得到数量:2,但只有一种产品的数据,所以我需要按oi.orderProductId分组,但显然,只要我添加第二个groupBy oi.orderProductId,那么TotalCount就会显示每个记录的总和。我完全知道这是正确的行为,但如果有办法实现我正在努力做的事情,我就是想不通。我假设我必须以某种方式使用subselect,但我不确定这是否可能实现。到目前为止,我的两张桌子和两张桌子都安排好了

tbl订单

医嘱ID

日期创建

tblorderProducts

订单产品ID

医嘱ID

数量

我希望有人能给我一个提示,告诉我怎样才能做到这一点。非常感谢。

方法总是替换当前的groupBy子句。使用
addGroupBy()

    return $this->createQueryBuilder('o')
        ->select(array(
            'o AS orderData',
            'oi',
            'sum(oi.qty)AS noOfItems'))
        ->join('o.orderItems', 'oi')
        ->groupBy('o.orderId')
        ->groupBy('oi.orderProductId')
        ->getQuery()
        ->execute();