php - Symfony Doctrine 查询中的行号

标签 php database doctrine symfony-1.4 dql

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

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

我正在将 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/

相关文章:

javascript - 如何用我要编辑的html表中行的数据填充表单中的输入字段

php - 让基于 symfony2 客户端的动态 CSS 以某种方式工作

javascript - 使用vue-router,如何制作菜单选择样式?

MySQL 多对多关系的限制

Symfony2 - 可捕获的 fatal error : _construct() must be an instance of Doctrine\ORM\EntityManager

php - 如何在 linux debian 上使用来自 php 的 url 参数运行 scrapy

python - 使用 Python 将 CSV 解析为 API 的数据库?

database - 在大 csv 文件上加速 scala 中的模式匹配算法

php - 我如何在 symfony2 中使用 DQL 获得单个结果

mysql - 将子子项中的外键添加到 "super parent"- 是否有更好的方法如 View ?