сортировка по умолчанию поставщика данных yii2
в Yii этот код работает для сортировки по умолчанию:
$dataProvider = new CActiveDataProvider('article',array(
'sort'=>array(
'defaultOrder'=>'id DESC',
),
как сортировка по умолчанию может быть установлена в yii2?
пробовал ниже код, но результата нет:
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => ['defaultOrder'=>'topic_order asc']
]);
5 ответов:
Я думаю, что есть правильное решение
$dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort'=> ['defaultOrder' => ['topic_order'=>SORT_ASC]] ]);
defaultOrder содержит массив, где ключ-это имя столбца, а значение -
SORT_DESCилиSORT_ASCвот почему ниже код не работает.$dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort' => ['defaultOrder'=>'topic_order asc'] ]);Правильно
$dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort' => [ 'defaultOrder' => [ 'topic_order' => SORT_ASC, ] ], ]);Примечание: Если запрос уже указывает предложение orderBy, новые инструкции по упорядочению, заданные конечными пользователями (через конфигурацию сортировки), будут добавлены к существующему предложению orderBy. Все существующие предложения limit и offset будут перезаписаны разбиением на страницы запрос от конечных пользователей (через конфигурацию разбиения на страницы).
вы можете подробно узнать из Yii2 руководство поставщика данных
сортировка путем передачи объекта сортировки в query
$sort = new 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', ], ], ]); $models = Article::find() ->where(['status' => 1]) ->orderBy($sort->orders) ->all();
попробуй этот
$dataProvider = new ActiveDataProvider([ 'query' => $query, ]); $sort = $dataProvider->getSort(); $sort->defaultOrder = ['id' => SORT_ASC]; $dataProvider->setSort($sort);
вы можете изменить модель поиска такой
$dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort' => [ 'defaultOrder' => ['user_id =5 asc, document_id asc'] ] ]);
Comments