我刚刚遇到了一件非常烦人的事情。我有一个查询生成器:原则查询生成器错误结果
$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并直接执行到数据库,我得到529对象。但这是相同的查询!
有人知道造成这两个结果之间的差距的原因?
编辑:发现了一些东西。当我做一个计数查询时,我得到了203个结果,但是当我做一个正常的结果并计算结果时,我得到了192个结果。这是否意味着教条有最大变异或什么?
编辑2:它似乎是特定于我的应用程序的继承问题。再次感谢您的帮助。
什么是SQL查询,你都做了些什么? –
这是因为leftJoins的。如果在数据库查询密切关注结果你会发现有多行含有'a'的行多次出现,而连接的内容不同。试着在你的本地sql查询中添加一个'GROUP BY a.id' (这将消除大量的数据,但它应该降低到192个结果,因为每个输入项只会显示一次)。 – Joe
感谢您的回复。我发现了一些可能导致某些事情的东西。当我做一个SQL计数()查询我得到203结果。但是当我做一个getResult()和一个PHP计数()时,我得到了192.这真的很奇怪,我实际上有点迷茫。 –