我刚遇到一件非常讨厌的事情。我有一个queryBuilder:
$queryBuilder
->select('a')
->addSelect('am')
->addSelect('m')
->addSelect('c')
->addSelect('t')
->leftJoin('a.articleMedias', 'am')
->leftJoin('am.media', 'm')
->leftJoin('a.categories', 'c')
->leftJoin('a.translations', 't')
->add('where', $queryBuilder->expr()->in('a.site', $ids))
;
当我得到结果时,我得到192个对象。 问题是当我转储sql并直接执行它到db时,我得到了529个对象。但这是同样的问题!
有人知道两个结果之间存在这种差距的原因吗?
编辑:找到了一些东西。当我进行计数查询时,我得到203个结果,但是当我做一个正常的结果并计算结果时,我得到192个结果。这是否意味着教义有最大变量或什么?编辑2:它似乎是我的应用程序特有的继承问题。再次感谢帮助我。
答案 0 :(得分:2)
最可能的答案是,你没有得到529个对象,而是529行,其中构建了192个对象(因为左边连接)。
将查询直接放入数据库时,您必须计算对象的唯一(或SQL:DISTINCT
行数。根据您的ID列,将您转储的查询更改为{{1}这个结果应该为你提供192行,与你的192个对象相匹配。
如果没有,请您发布您的查询结果吗?