Laravel 中的积分排名,其中积分相等

问题描述

我正在研究如何更正显示积分排名以显示排行榜。

我的 Modal 中目前有以下内容

 public function getPointrankAttribute(){
    $year = Carbon::parse(Carbon::now())->year;

    $pointrank = Points::query()
        ->select('member_id')->selectRaw('SUM(value) as TotalPoints')
        ->where('Year','=',$year)
        ->groupBy('member_id')
        ->orderByDesc('Totalpoints')
        ->get();

    return $pointrank->search(function($points){
        return $points->member_id == $this->id;
    }) + 1;

}

这很好用,但是它使用表格中的行位置来显示排名,所以第一条记录是第一条,第二条记录显示为第二条。

然而,当成员的总分相同时会出现问题,因为在此情况下,排名基于表中的位置

看下面的例子

|member_id|totalpoints|
|   12    | 20        |
|    3    |  10       |
|   10    |  10       |
|    5    |   5       |

在这个例子中基于我当前的解决方案

第 12 名成员 = 第 1 名,第 3 名成员 = 第 2 名,第 10 名成员 = 第 3 名,第 5 名成员 = 第 4 名

我想要的是以下

第 12 名成员 = 第 1 名,第 3 名成员 = 第 2 名,第 10 名成员 = 第 2 名,第 5 名成员 = 第 4 名

当我们有超过 1 个成员共享该位置时(如本例中的成员 3 和 10),如果我也可以添加“=”,那就太棒了

提前致谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)