我正在为我的用户制作排名系统,这是我目前的进展:
获取所有用户并按照他们的分数排序——它可以正常工作。
获取所有用户并按照他们的分数排序——它可以正常工作。
$users = User::all();
$users = $users->sortByDesc(function($item){
return $item->points()->sum('amount');
});
找到你在排名中的位置 - 它运行良好
$position = 0;
foreach($users as $user){
if(Auth::user()->id == $user->id) break;
$position++;
}
获取我和上/下方的用户 - 不起作用。我得到了随机的用户。看起来集合不再排序了。
$myRank = new Collection();
if($position > 9){
$myRank->add($users->get($position-1));
$myRank->add($users->get($position));
$myRank->add($users->get($position+1));
return view('rank.show', ['topTen' => $users->take(15), 'myRank' => $myRank]);
}
请帮我解决这个问题,或者提供另一种方法的提示(对于大量记录来说较轻) 。