Я хочу получить рейтинг в Laravel - PullRequest
1 голос
/ 04 марта 2020

Я хочу получить рейтинг в Laravel.

БД здесь.

id Bigint
name string
point BigInt
.....

Я хочу получить рейтинг в столбце баллов. Что мне делать?

теперь код такой.

User::where('id', 1)->first();

если у меня есть эти данные.

id name score ...
1    AA      10
2    CD      10
3    ER      40
4    DR      5

Я хочу получить номер ранга ex) id 1 => 2 (or3) ex) id 3 => 1

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Вы можете получить звание, как показано ниже:

User::selectRaw("SELECT id, name, point,  FIND_IN_SET( point, (
                 SELECT GROUP_CONCAT( DISTINCT point ORDER BY point DESC ) FROM 
                user )  
               ) AS rank
                FROM user")

        ->get()
0 голосов
/ 04 марта 2020

Попробуйте это. Вот необработанный запрос:

SELECT id,name,point,
@curRank := @curRank + 1 AS rank
FROM user u, (SELECT @curRank := 0) r
ORDER BY point;

Вы можете написать его в laravel следующим образом:

DB::select("SELECT id,name,point,
@curRank := @curRank + 1 AS rank
FROM user u, (SELECT @curRank := 0) r
ORDER BY point;");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...