DQL ORDER BY不使用负数

时间:2014-01-03 21:31:16

标签: symfony doctrine dql

我正在使用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]。

有没有人知道我应该使用的查询以数字顺序显示它们。我猜这个查询按字母顺序对它们进行排序。

1 个答案:

答案 0 :(得分:0)

实际上,Doctrine创建了内部正常的SQL查询,您可以通过$query->getSQL()进行预览。

请注意,它在生成的SQL中使用标准ORDER BY。因此,无论是引擎问题(通过运行查询手动检查)还是查询水合问题。

如果第一个问题证明是正确的,您可以尝试编写your own ordering function in DQL或使用NativeQuery。

如果后者似乎有问题,你可以编写自己的Hydrator(硬盘,无文件)或使用NEW来强行进入 not 并使用像ArrayHydration这样的手工创建对象。