Yii2:升序排序时如何将空值放在对象列表的末尾?
Yii2: How to put null values to the end of an object list when sorting is ascending?
这是我的 DataProvider:
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => ['pageSize' => 50],
'sort' => [
'defaultOrder' => [
'priority' => SORT_DESC,
'date_targeted' => SORT_ASC
]
]
]);
我想要的是将 ("not set") 移动到结果的末尾。
我该怎么做?
您可以在 select
中添加新字段。并像这样设置 IF
案例:
$query->select([
'*',
new \yii\db\Expression('IF(date_targeted IS NULL, 1, 0) AS date_targeted_flag')
]);
并在 sort
中添加 date_targeted_flag
:
'sort' => [
'defaultOrder' => [
'date_targeted_flag' => SORT_ASC,
'priority' => SORT_DESC,
'date_targeted' => SORT_ASC
],
'attributes' => [
'date_targeted_flag',
'priority',
'date_targeted'
]
]
这是我的 DataProvider:
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => ['pageSize' => 50],
'sort' => [
'defaultOrder' => [
'priority' => SORT_DESC,
'date_targeted' => SORT_ASC
]
]
]);
我该怎么做?
您可以在 select
中添加新字段。并像这样设置 IF
案例:
$query->select([
'*',
new \yii\db\Expression('IF(date_targeted IS NULL, 1, 0) AS date_targeted_flag')
]);
并在 sort
中添加 date_targeted_flag
:
'sort' => [
'defaultOrder' => [
'date_targeted_flag' => SORT_ASC,
'priority' => SORT_DESC,
'date_targeted' => SORT_ASC
],
'attributes' => [
'date_targeted_flag',
'priority',
'date_targeted'
]
]