defaultOrderは、キーがカラム名と値がある配列含まれてい 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句が指定されている場合、エンドユーザーによって(並べ替え構成を介して)提供された新しい順序付け指示は、既存のorderBy句に追加されます。既存の制限句およびオフセット句は、エンドページユーザーからのページ付け要求によって(ページ付け構成を介して)上書きされます。
データプロバイダーのYii2ガイドから詳細を学ぶことができ
ます
クエリで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();