我正在使用DQL查询:
SELECT NEW PodcastBundle:PodcastDTO(p.id, p.title, SUM(ue.rating)) FROM
PodcastBundle:UserEpisode ue
JOIN PodcastBundle:Episode e WITH ue.episode = e
JOIN PodcastBundle:Podcast p WITH e.podcast = p
WHERE ue.user = :user
GROUP BY p
ORDER BY ue.rating DESC
' ue.rating'只保存数字值,也可以是负数。但是当循环结果时,顺序是[1,0,-4,1]。
有没有人知道我应该使用的查询以数字顺序显示它们。我猜这个查询按字母顺序对它们进行排序。
答案 0 :(得分:0)
实际上,Doctrine创建了内部正常的SQL查询,您可以通过$query->getSQL()
进行预览。
请注意,它在生成的SQL中使用标准ORDER BY
。因此,无论是引擎问题(通过运行查询手动检查)还是查询水合问题。
如果第一个问题证明是正确的,您可以尝试编写your own ordering function in DQL或使用NativeQuery。
如果后者似乎有问题,你可以编写自己的Hydrator(硬盘,无文件)或使用NEW来强行进入 not 并使用像ArrayHydration这样的手工创建对象。