yii2数据提供者默认sorting
在yii这个代码适用于默认sorting:
$dataProvider = new CActiveDataProvider('article',array( 'sort'=>array( 'defaultOrder'=>'id DESC', ),
如何在yii2中设置默认sorting?
尝试下面的代码,但没有结果:
$dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort' => ['defaultOrder'=>'topic_order asc'] ]);
我认为有适当的解决办法
$dataProvider = new ActiveDataProvider([ 'query' => $query, 'sort'=> ['defaultOrder' => ['topic_order'=>SORT_ASC]] ]);
官方文档链接
要么
$dataProvider->setSort([ 'defaultOrder' => ['topic_order'=>SORT_DESC], 'attributes' => [...
defaultOrder包含一个数组,其中key是列名,值是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子句,则由最终用户(通过sortingconfiguration)给出的新的sorting指令将被追加到现有的orderBy子句中。 任何现有的限制和偏移子句将被最终用户的分页请求(通过分页configuration)覆盖。
您可以从Yii2数据提供者指南获取详细信息
sorting通过在查询中传递Sort对象
$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();