php - consultas - clasificación por defecto del proveedor de datos yii2
gii yii2 (5)
En yii este código funciona para la clasificación por defecto:
$dataProvider = new CActiveDataProvider(''article'',array(
''sort''=>array(
''defaultOrder''=>''id DESC'',
),
¿Cómo se puede establecer la clasificación predeterminada en yii2?
intenté debajo del código, pero no hay resultado:
$dataProvider = new ActiveDataProvider([
''query'' => $query,
''sort'' => [''defaultOrder''=>''topic_order asc'']
]);
Creo que hay una solución adecuada
$dataProvider = new ActiveDataProvider([
''query'' => $query,
''sort''=> [''defaultOrder'' => [''topic_order''=>SORT_ASC]]
]);
Intenta con este
$dataProvider = new ActiveDataProvider([
''query'' => $query,
]);
$sort = $dataProvider->getSort();
$sort->defaultOrder = [''id'' => SORT_ASC];
$dataProvider->setSort($sort);
O
$dataProvider->setSort([
''defaultOrder'' => [''topic_order''=>SORT_DESC],
''attributes'' => [...
puedes modificar un modelo de búsqueda como este
$dataProvider = new ActiveDataProvider([
''query'' => $query,
''sort'' => [
''defaultOrder'' => [''user_id =5 asc, document_id asc'']
]
]);
defaultOrder contiene una matriz donde la clave es un nombre de columna y el valor es SORT_DESC
o SORT_ASC
, por eso 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. Las solicitudes de paginación de los usuarios finales (a través de la configuración de paginación) sobrescribirán las cláusulas de límite y compensación existentes.
Puede detallar aprender de Yii2 Guía del proveedor de datos
Clasificación Al pasar Sort 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();