【问题标题】:Doctrine 2 How to do a Sum from a Join but Group by 2 columnsDoctrine 2 如何从连接中求和但按 2 列分组
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 2012-06-20
      相关资源
      最近更新 更多