我正在为我的用户制作耙子系统,以下是我目前所拥有的:
获取所有用户并按点对其进行排序——效果很好.
$users = User::all();
$users = $users->sortByDesc(function($item){
return $item->points()->sum('amount');
});
Find your position in ranking - it works fine
$position = 0;
foreach($users as $user){
if(Auth::user()->id == $user->id) break;
$position++;
}
Get myself and users above/under me - it doesn't work. I get random users. It looks like the collection is not sorted anymore.
$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]);
}
请帮我解决这个问题,或者给我一些其他方法的提示(对于很多记录来说都是轻量级的)