问题描述
我正在使用Symfony和Doctrine Querybuilder返回订单列表,其中包含每个订单中所有产品的计数。这意味着我在Orders和OrderProducts之间具有1:n的关系,OrderProducts表存储了OrderID和每种产品的数量。如果我执行groupBy o.orderId,那么我得到正确的Sum,但是我没有获得属于orderId的所有orderProducts的数据,因此,如果orderproducts表中有2个不同的Products,那么我得到的数量是2: 1个产品的数据,因此我需要按oi.orderProductId进行分组,但显然,一旦我添加了第二个groupBy oi.orderProductId,则TotalCount就会向我显示每个记录的总和。我完全知道这是正确的行为,但是如果有办法实现我要尝试的目标,我只是无法理解。我认为我必须以某种方式使用子选择,但是我不确定这是否有可能实现。到目前为止我的2张桌子和我尝试过的
tbl订单
orderId
dateCreated
tblorderProducts
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()
方法始终替换当前的group by子句。使用addGroupBy()
method instead。