defaultOrder contiene un array in cui la chiave è il nome di una colonna e il valore è a SORT_DESC
o SORT_ASC
è per questo che il codice sottostante non funziona.
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => ['defaultOrder'=>'topic_order asc']
]);
Modo corretto
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => [
'defaultOrder' => [
'topic_order' => SORT_ASC,
]
],
]);
Nota: se una query specifica già la clausola orderBy, le nuove istruzioni di ordinamento fornite dagli utenti finali (tramite la configurazione di ordinamento) verranno aggiunte alla clausola orderBy esistente. Eventuali clausole di limite e offset esistenti verranno sovrascritte dalla richiesta di impaginazione da parte degli utenti finali (tramite la configurazione dell'impaginazione).
Puoi apprendere in dettaglio dalla
Guida Yii2 del fornitore di dati
Ordinamento Passando l'oggetto Sort nella 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();