Метод sortByDesc
Метод sortByDesc применяется к коллекции и возвращает новую коллекцию,
отсортированную по убыванию. В качестве аргумента метод принимает имя ключа,
по которому будет выполняться сортировка, либо callback-функцию,
возвращающую значение для сравнения. Метод не изменяет исходную коллекцию,
а возвращает новую отсортированную.
Синтаксис
<?php
$collection = collect([...]);
$sorted = $collection->sortByDesc($key);
// или с callback
$sorted = $collection->sortByDesc(function ($item) {
return $item->$key;
});
?>
Пример
Отсортируем коллекцию чисел по убыванию:
<?php
$arr = [3, 1, 4, 1, 5, 9, 2, 6];
$collection = collect($arr);
$sorted = $collection->sortByDesc(function ($value) {
return $value;
});
$res = $sorted->values()->all();
print_r($res);
?>
Результат выполнения кода:
[9, 6, 5, 4, 3, 2, 1, 1]
Пример
Отсортируем коллекцию объектов по полю 'id' по убыванию:
<?php
use AppModelsUser;
$users = User::all();
$sorted = $users->sortByDesc('id');
foreach ($sorted as $user) {
echo $user->id . ' - ' . $user->name . "\n";
}
?>
Результат выполнения кода:
"5 - user_e"
"4 - user_d"
"3 - user_c"
"2 - user_b"
"1 - user_a"
Пример
Отсортируем коллекцию массивов по полю 'created_at' по убыванию:
<?php
use AppModelsArticle;
$articles = Article::all();
$sorted = $articles->sortByDesc('created_at');
foreach ($sorted as $article) {
echo $article->title . ' - ' . $article->created_at . "\n";
}
?>
Результат выполнения кода:
"article 3 - 2026-02-28 15:30:00"
"article 2 - 2026-02-27 12:15:00"
"article 1 - 2026-02-26 09:45:00"