return $this->createQueryBuilder('a')
->leftJoin('a.arrivalProducts', 'p')
->select('a', 'SUM(p.cost*p.qty) as sum')
->groupBy('a.id')
->addGroupBy('p.currencyId')
->getQuery()
->getResult();
结果是 2 行。如果getArrayResult
,则三行。直接查询产生三行:
SELECT a0_.id AS id_0, a0_.user_id AS user_id_1, a0_.warehouse_id AS warehouse_id_2,
a0_.created_at AS created_at_3, a0_.updated_at AS updated_at_4,
SUM(a1_.cost * a1_.qty) AS sclr_5, a0_.user_id AS user_id_6,
a0_.warehouse_id AS warehouse_id_7
FROM arrival a0_ LEFT JOIN arrival_product a1_ ON a0_.id = a1_.arrival_id
GROUP BY a0_.id, a1_.currency_id;
这是直接要求。为什么有两个对象,但数组中有三个,应该是这样。
输出数据的 dump() 有时会播放并显示不同的结果。