Метод orderByDesc
Метод orderByDesc применяется к запросу Eloquent
или Query Builder и сортирует результаты по указанной
колонке в порядке убывания (от большего к меньшему).
В качестве единственного обязательного параметра
передаётся имя колонки, по которой производится сортировка.
Метод является удобной альтернативой вызову
orderBy с направлением 'desc'.
Синтаксис
<?php
Model::orderByDesc($column);
?>
Пример
Давайте выберем все статьи и отсортируем их по полю
'id' в порядке убывания, чтобы сначала выводились
самые новые записи:
<?php
use AppModelsArticle;
$res = Article::orderByDesc('id')->get();
foreach ($res as $article) {
echo $article->id . ' - ' . $article->title . "\n";
}
?>
Результат выполнения кода:
"3 - article 3"
"2 - article 2"
"1 - article 1"
Пример
Метод можно вызывать в цепочке с другими методами фильтрации. Например, выберем только опубликованные статьи и отсортируем их по дате создания в порядке убывания:
<?php
use AppModelsArticle;
$res = Article::where('status', 'published')
->orderByDesc('created_at')
->get();
foreach ($res as $article) {
echo $article->title . ' - ' . $article->created_at . "\n";
}
?>
Результат выполнения кода:
"article 3 - 2025-01-15 14:30:00"
"article 2 - 2025-01-14 10:20:00"
"article 1 - 2025-01-13 09:15:00"
Пример
Можно применить несколько сортировок подряд. Сначала
отсортируем по 'status', а затем по 'id'
в порядке убывания:
<?php
use AppModelsArticle;
$res = Article::orderBy('status', 'asc')
->orderByDesc('id')
->get();
foreach ($res as $article) {
echo $article->status . ' - ' . $article->id . "\n";
}
?>
Результат выполнения кода:
"draft - 2"
"draft - 1"
"published - 3"
Смотрите также
-
метод
orderBy,
который задаёт сортировку с указанием направления -
метод
orderByRaw,
который позволяет использовать raw-выражения для сортировки -
метод
latest,
который сортирует по полю'created_at'по убыванию -
метод
oldest,
который сортирует по полю'created_at'по возрастанию