【发布时间】:2020-08-13 11:55:32
【问题描述】:
我正在使用 Symfony 和 Doctrine Querybuilder 返回一个订单列表,其中包含每个订单中所有产品的计数。这意味着我在 Orders 和 OrderProducts 之间存在 1:n 关系,OrderProducts 表存储 OrderID 和每个产品的数量。如果我做一个 groupBy o.orderId 那么我得到了正确的总和,但是我没有得到属于 orderId 的所有 orderProducts 的数据,所以如果 orderproducts 表中有 2 个不同的产品,那么我得到 qty:2 但只有1 个产品的数据,所以我需要按 oi.orderProductId 进行分组,但很明显,一旦我添加了第二个 groupBy oi.orderProductId,TotalCount 就会向我显示每条记录的总和。我完全知道这是正确的行为,但是如果有办法实现我想要做的事情,我就无法理解它。我假设我必须以某种方式使用子选择,但我不确定这是否可能实现。到目前为止,我的 2 张桌子和我尝试过的
tbl 订单
订单编号
创建日期
tblorderProducts
orderProductid
订单编号
数量
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();
我希望有人能给我一个提示,我该如何实现它。非常感谢您。
【问题讨论】:
标签: doctrine-orm doctrine