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_DESCSORT_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(); 
Interesting Posts