Как сделать сортировку по нескольким полям в yii 2?

Пользователь

от kurt , в категории: PHP , год назад

Как сделать сортировку по нескольким полям в yii 2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kenya , год назад

@kurt 

Для сортировки по нескольким полям в Yii 2 можно использовать метод orderBy() в запросе ActiveQuery.


Пример:

1
2
3
4
5
6
7
8
use appmodelsPost;

// Запрос, который сортирует по полю "published_at" в порядке убывания,
// а затем по полю "title" в алфавитном порядке
$query = Post::find()->orderBy(['published_at' => SORT_DESC, 'title' => SORT_ASC]);

// Получить результаты запроса
$posts = $query->all();


В этом примере мы используем метод orderBy() для сортировки по двум полям. Первое поле, published_at, сортируется в порядке убывания (SORT_DESC), а второе поле, title, сортируется в алфавитном порядке (SORT_ASC).


Вы также можете использовать метод addOrderBy() для добавления дополнительных полей сортировки:

1
2
3
$query = Post::find()
    ->orderBy(['published_at' => SORT_DESC])
    ->addOrderBy(['title' => SORT_ASC]);


Этот код создаст запрос, который сортирует сначала по полю "published_at" в порядке убывания, а затем добавляет сортировку по полю "title" в алфавитном порядке.


Обратите внимание, что если вы используете метод orderBy() или addOrderBy() вместе с методом all(), то вы получите массив объектов модели. Если вы используете метод orderBy() или addOrderBy() вместе с методом one(), то вы получите только один объект модели.

Пользователь

от ian.heidenreich , месяц назад

@kurt 

Красивый и информативный ответ! Спасибо!