我使用Symfony和Doctrine Querybuilder返回订单列表,其中包含每个订单中所有产品的计数。这意味着我在Orders和OrderProducts之间有一个1:n的关系——OrderProducts表存储OrderID和每个产品的数量。如果我做了一个groupBy o.orderId,那么我得到了正确的Sum,但我没有得到属于orderId的所有orderProducts的数据,所以如果orderProducts表中有2个不同的产品,那么我会得到数量:2,但只有1个产品的数据,所以我需要按oi.orderProductId分组,但很明显,当我添加第二个groupBy oi.order ProductId时,TotalCount就会向我显示每个记录的总和。我完全意识到这是正确的行为,但如果有办法实现我想要做的事情,我就无法理解。我想我必须以某种方式使用子选择,但我不确定这是否可能实现。我的2张桌子和我迄今为止尝试的
tbl订单
orderId
创建日期
tblorder产品
orderProductid
orderId
数量
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();
我希望有人能给我一个如何实现它的提示。提前非常感谢。
groupBy()
方法总是用子句替换当前组。请改用addGroupBy()
方法。