Задать вопрос
@Ravenenok

Как сделать сортировку колонки с датой в Yii2 GridView?

Данные выбираются из БД, получаем массив, который хотим отобразить с помощью 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
                ]],
            ]
        ]);
  • Вопрос задан
  • 1092 просмотра
Подписаться 2 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 1
Alexufo
@Alexufo
противоречивый, сложный, весь компьютерный.
формат даты в нем dd.mm.yyyy

Вот,она,дружок и проблемка. Хранить это нужно задом наперед yyyy.mm.dd и с сортировкой проблем не будет
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы