3

我将单圈时间的数据存储在数据库中,数据包括距离、时间、平均速度和最大速度。

我正在尝试显示一个排行榜,该排行榜显示您设置的任何查询中的前十名(谁走得最远,平均时间最佳等)。但是,在前十名下方,我想显示在排行榜中登录位置的用户。为此,我尝试运行相同的查询来排序我的结果并添加一个 ROW NUMBER 来获取位置。

我将 symfony 1.4 与 Doctrine ORM 一起使用,但我一生都无法弄清楚如何在查询中获取行号。我知道你可以像这样在 SQL 中做到这一点:

SELECT full_name, ROW_NUMBER() OVER(ORDER BY distance) AS row_number

然而我无法让它在 Doctrine Symfony 中工作。

有没有人对我可以做到这一点有任何想法?(甚至是另一种方式)

提前致谢。

4

1 回答 1

0

好的,这是我的解决方案:

经过更多的实验和合作,我找到了答案。

我所做的是摆脱选择,只返回有序的结果列表;

$results = self::getInstance()->createQuery('r')
    ->orderBy('r.distance')
    ->execute();

然后我将此结果水合到一个数组中并使用 array_search() 在数组中查找结果的键(幸运的是我在这里返回用户数据,并且我知道我在数组中寻找的用户)

$index = array_search($user->toArray(), $results->toArray());

然后我可以返回$index + 1给我用户在排行榜中的位置。

可能有更好的方法来做这个数据库方面,但我无法为我的生活找出如何。

如果有人有更好的解决方案,请分享。

于 2011-06-10T11:13:14.563 回答