如何使用雄辩获得行位置

时间:2018-06-02 08:58:36

标签: php mysql laravel eloquent

我有一个排行榜,显示销售额最高的顶级人物。

这很简单。它只是获得前25名并显示它们

$user = \App\User::orderBy('sales', 'desc')
        ->take(25)
        ->get();

所以最终可能会以

结束
+-------+-------------------+
|  pos  |user_id|   sales   |
----------------------------|
| 1     |    1  | 1,293     |
| 2     |   99  | 1,093     |
| 3     |   45  | 985       |
| 4     |  948  | 900       |
| 5     |   39  | 889       |
| 6     |   29  | 887       |
+---------------------------+

现在,如果他们不在前25名中,我怎样才能获得正在查看排行榜的用户的位置?

如果用户ID 219位于935位置,我想在结尾显示类似的内容

+-------+-------------------+
|  pos  |user_id|   sales   |
|---------------------------|
| 935   |  219  |     87    |
+---------------------------+

如何在不计算用户的情况下有效地完成这项工作? (因为有成千上万的用户)

1 个答案:

答案 0 :(得分:3)

我想你有当前的用户数据。因此,您无需查询数据库即可获取当前用户idsales。因此,主要问题是找到比当前更多sales用户数

所以,你需要一个像

这样的查询
SELECT COUNT(*) as pos FROM your_table WHERE sales > %current_user_sales%

将其翻译为laravel查询,并在ouptutting时添加1