问题描述
我正在研究如何更正显示积分排名以显示排行榜。
我的 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 (将#修改为@)