alex5e
@alex5e

Как в Yii2 ActiveDataProvider отсортировать записи по нескольким критериям?

Мне необходимо в ActiveDataProvider положить записи, отсортированные по какому то критерию (например, по алфавиту) сначала при положительной цене товара, а потом по тому же критерию, но при нулевой цене товара.
Пробовал написать два ActiveDataProvider, а затем соединить их в один, но так не работает, да и неправильно, судя по всему.
$notAvailableDataProvider = new ActiveDataProvider($dataProvider);
$notAvailableDataProvider->query->andWhere('`price` = ' . '0');
$dataProvider = new ActiveDataProvider($dataProvider, $notAvailableDataProvider);

Подскажите как решить эту задачу? Важно в конечном счете получить именно ActiveDataProvider
  • Вопрос задан
  • 323 просмотра
Пригласить эксперта
Ответы на вопрос 2
@karminski
Senior PHP /React.js developer
Так не подойдёт?

$dataProvider->sort = [
                'defaultOrder' => ['price' => SORT_DESC, 'title' => SORT_ASC],
                'attributes' => ['price', 'title']
            ];
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Соединить 2 ActiveDataProvider не получится, но можно сделать 2 query и объединить их, а потом передать в ActiveDataProvider.
Вы описали как хотите объединить 2ActiveDataProvider, а Вы опишите структуру таблицы, логику выборки и желаемый результат. Потому что, то что Вы хотите точно можно, а то как Вы хотите точно нет.
Исходя из Вашего вопроса ответ Антон вполне логичен и правильный. Так как Вас он не устроил, значит мы не понимаем что Вам надо и архитектуру данных.
Ответ написан
Ваш ответ на вопрос

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

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