defaultOrder contient un tableau où key est un nom de colonne et la valeur est un SORT_DESC
ou SORT_ASC
c'est pourquoi le code ci-dessous ne fonctionne pas.
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => ['defaultOrder'=>'topic_order asc']
]);
Bonne manière
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => [
'defaultOrder' => [
'topic_order' => SORT_ASC,
]
],
]);
Remarque: Si une requête spécifie déjà la clause orderBy, les nouvelles instructions de classement données par les utilisateurs finaux (via la configuration de tri) seront ajoutées à la clause orderBy existante. Toutes les clauses de limite et de décalage existantes seront écrasées par la demande de pagination des utilisateurs finaux (via la configuration de pagination).
Vous pouvez détailler apprendre du
guide Yii2 du fournisseur de données
Trier en passant l'objet Trier dans la requête
$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();