Как получить позицию строки с помощью eloquent - PullRequest
0 голосов
/ 02 июня 2018

У меня есть таблица лидеров, которая показывает лучших людей, у которых было больше всего продаж.

Это просто.Он просто получает верхние 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?

Если идентификатор пользователя 219 находится в позиции 935, я хочу отобразить что-то вроде этого в конце

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

Как это можно сделать эффективно безсчитать до пользователя?(Так как есть тысячи пользователей)

1 Ответ

0 голосов
/ 02 июня 2018

Я полагаю, у вас есть текущие данные пользователя.Таким образом, вам не нужно запрашивать базу данных, чтобы получить текущего пользователя id или sales.Итак, основная проблема заключается в том, чтобы найти количество пользователей , которые имеют sales больше, чем текущий.

Итак, вам нужен запрос типа

SELECT COUNT(*) as pos FROM your_table WHERE sales > %current_user_sales%

Перевести егок запросу laravel и добавьте 1 при выходе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...