Данные выбираются из БД, получаем массив, который хотим отобразить с помощью GridView и в котором хотим иметь возможность сортировать по клику на столбец create_date (формат даты в нем dd.mm.yyyy). Сейчас сортировка по столбцу create_date работает, пришлось ввести дополнительный столбец create_date_unix (он содержит юниксовый формат даты), по которому производим сортировку даты. На мой взгляд это костыль, и должен быть способ, чтобы столбец даты сортировался без использования дополнительных значений, но не как текст (в этом случае сортировка идет по числу, а только потом по месяцу), а как дата.
Как этого добиться? Нижеприведенный код работает и реализует сортировку по столбцу create_date, но с использованием вспомогательного столбца.
$memos = yii::$app->db->createCommand('SELECT * FROM dbo.v_memos_list
WHERE agency_number = :agency_number order by create_date_unix desc')
->bindValue(':agency_number',$agency_number)
->queryAll();
Источником данных у нас будет ArrayDataProvider, который задается следующим образом
$dataProvider = new ArrayDataProvider([
'allModels' => $memos,
'pagination' => [
'pageSize' => 17,
],
'sort' => [
'attributes' => ['id', 'subtype', 'status', 'reg_id', 'create_date'=> [
'asc' => [
'create_date_unix' => SORT_ASC,
],
'desc' => [
'create_date_unix' => SORT_DESC,
],
'label' => 'Создано',
'default' => SORT_ASC
]],
]
]);