Я делаю систему сгребания для моих пользователей, и вот что у меня до сих пор:Laravel коллекция сортировки, а затем по ключевым
Получить все пользователи и сортировать их по точкам - это отлично работает.
$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]);
}
Пожалуйста, помогите мне с этим или дать некоторый намек на другой подход (легкий вес для многих записей)
Я думаю, что вы можете расширить класс коллекции затем вызвать ksort на массиве подложки , Очень грязный хак, хотя – peter