defaultOrder contiene una matriz donde la clave es un nombre de columna y el valor es a SORT_DESC
o SORT_ASC
es por eso que el código siguiente no funciona.
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => ['defaultOrder'=>'topic_order asc']
]);
Manera correcta
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort' => [
'defaultOrder' => [
'topic_order' => SORT_ASC,
]
],
]);
Nota: Si una consulta ya especifica la cláusula orderBy, las nuevas instrucciones de pedido dadas por los usuarios finales (a través de la configuración de clasificación) se agregarán a la cláusula orderBy existente. Cualquier limitación existente y cláusulas de compensación serán sobrescritas por la solicitud de paginación de los usuarios finales (a través de la configuración de paginación).
Puede obtener información detallada de la Guía del proveedor de datos de
Yii2
Ordenar pasando Ordenar objeto en la consulta
$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();