我有一个学说查询,以返回属于特定商店的所有客户。总共返回了29条记录。但是,如果我运行一个计数查询,几乎相同的DQL,我会得到不同数量的结果
Query1 - 获取结果:
SELECT c FROM Customer c INNER JOIN c.shops cs WHERE cs.shop IN(2, 3)
返回(使用count()来计算返回的记录数)
int(29)
查询2 - 计算结果:
SELECT count(c) FROM Customer c INNER JOIN c.shops cs WHERE cs.shop IN(2, 3)
Retruns:
array(1) { [0]=> array(1) { [1]=> string(2) "36" } }
我似乎无法弄清楚这是怎么回事?希望有人能帮忙......
答案 0 :(得分:1)
我认为你必须“GROUP BY(c)”
答案 1 :(得分:1)
您必须考虑如果您拥有与两家商店相关联的同一客户的情况,在原始SQL土地上您将获得2行。
Doctrine在返回记录的水合步骤中解释了这一点,即$qb->getQuery()->getResults()
,并返回一个有意义的结果集(而不是一个你必须手动处理的重复项)。
您可以通过回显Doctrine从查询$qb->getSQL()
生成的SQL并通过Phpmyadmin,MySQL Workbench或Sequel Pro执行它来执行它,并将其与{{1 }}