Как отсортировать выборку по статусам?

Имеются статусы записей: 1. Новое, 2. Просрочено, 3. В работе, 4. Решено, 5. Архивировано.
Каждая запись имеет только один из перечисленных статусов.
Необходимо вывести сначала просроченные, потом новые, а потом все остальные.
Как я понимаю, нужно выполнить
SELECT * FROM TABLE ORDER BY status_id=2 DESC, status_id=1 DESC, status_id ASC;

Пытаюсь выполнить
$dataProvider->query->orderBy(['status_id' => [2, 1]]);

Но эффекта нет. Помогите пожалуйста.
  • Вопрос задан
  • 44 просмотра
Пригласить эксперта
Ответы на вопрос 1
maksim92
@maksim92 Куратор тега Yii
Нашел решение — пометь вопрос ответом!
Сортировка настраивается посредством свойства sort дата провайдера
$dataProvider = new ActiveDataProvider([
     'query' => $query,
     'sort'=> [
     'attributes' => [
            'age',
            'name' => [
                'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
                'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
                'default' => SORT_DESC,
                'label' => 'Name',
            ],
        ],
 ]);


Заполните массив attributes параметрами по которым вам необходимо сортировать, и далее передавайте данные параметры через get строку запроса в виде ...?sort=-name
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы