问题
Here is my DataProvider:
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => ['pageSize' => 50],
'sort' => [
'defaultOrder' => [
'priority' => SORT_DESC,
'date_targeted' => SORT_ASC
]
]
]);
What I want is to move ("not set") to the end of the results.
How can I do this?
回答1:
You may add new field in select. And set in IF case like that:
$query->select([
'*',
new \yii\db\Expression('IF(date_targeted IS NULL, 1, 0) AS date_targeted_flag')
]);
And in sort add date_targeted_flag:
'sort' => [
'defaultOrder' => [
'date_targeted_flag' => SORT_ASC,
'priority' => SORT_DESC,
'date_targeted' => SORT_ASC
],
'attributes' => [
'date_targeted_flag',
'priority',
'date_targeted'
]
]
This works fine - here and here.
来源:https://stackoverflow.com/questions/29071610/yii2-how-to-put-null-values-to-the-end-of-an-object-list-when-sorting-is-ascend