Codeincube | Как указать сортировку в Laravel Eloquent

Как указать сортировку в Laravel Eloquent

Дмитрий | 02-08-2024 | Laravel | 181

В этом коротком материале вы узнаете, как упорядочить записи Laravel Eloquent в порядке "возрастания" или "убывания", так что давайте начнем.

Сортировка Laravel по одному столбцу

Для упорядочивания по одному столбцу вы можете вызвать метод "OrderBy ()" и передать ему название "столбца" для упорядочивания. По умолчанию этот метод упорядочивает в порядке "возрастания". Ниже приведен код примера.

<?php

Post::query()
    ->orderBy('item_views')
    ->get();

Чтобы задать порядок по убыванию, вы можете написать свой код следующим образом.

<?php

Post::query()
    ->orderBy('item_views', 'desc')
    ->get();

// Так-же попробуйте альтернативный метод "orderByDesc"
Post::query()
    ->orderByDesc('item_views', 'desc')
    ->get();

Сортировка в Laravel по двум столбцам

Для упорядочивания по двум или более столбцам вы можете просто объединить их в цепочку, как показано ниже.

<?php

Post::query()
    ->orderBy('item_views', 'desc') // DESC
    ->orderBy('id') // ASC
    ->get();

// Так-же попробуйте альтернативный метод "orderByDesc"
Post::query()
    ->orderByDesc('item_views', 'desc') // DESC
    ->orderBy('id') // ASC
    ->get();

Сортировка в Eloquent Collection

Если вы уже получили коллекцию eloquent, например, используя функцию "all ()", вы можете связать ее с помощью метода "sortBy ()". Обратите внимание, что такая сортировка менее эффективна, чем вызов метода "OrderBy".

<?php

// Сортировка записей по возрастанию по полю title
$results = Posts::query()
    ->all()
    ->sortBy("item_title");

// Сортировка записей по убыванию по полю title
$results = Posts::query()
    ->all()
    ->sortByDesc("item_title");