我在数据库中存储圈速数据,数据包括距离、时间、平均速度和最大速度。
我正在尝试显示一个排行榜,该排行榜显示在您设置的任何查询中排名前十的人(谁走得最远,最佳平均时间等)。但是,在前十名下方,我想显示在排行榜中登录位置的用户。为此,我尝试运行相同的查询来对我的结果进行排序并添加行号以获取位置。
我正在将 symfony 1.4 与 Doctrine ORM 一起使用,但我终究无法弄清楚如何在查询中获取行号。我知道您可以像这样在 SQL 中执行此操作:
SELECT full_name, ROW_NUMBER() OVER(ORDER BY distance) AS row_number
但我无法让它在 Doctrine Symfony 中工作。
有没有人对我可以做到这一点有任何想法? (或者甚至是另一种方式)
提前致谢。
最佳答案
好的,这是我的解决方案:
经过更多的实验和合作,我找到了答案。
我所做的是去掉选择,只返回有序的结果列表;
$results = self::getInstance()->createQuery('r')
->orderBy('r.distance')
->execute();
然后我将这个结果水合到一个数组中,并使用 array_search() 在数组中找到结果的键(幸运的是我在这里返回用户数据,我知道我在数组中寻找的用户)
$index = array_search($user->toArray(), $results->toArray());
然后我可以返回 $index + 1 给我用户在排行榜中的位置。
可能有更好的方法来处理这个数据库方面的问题,但我一直无法找到方法。
如果有人有更好的解决方案,请分享。
关于php - Symfony Doctrine 查询中的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6290632/