Встроить sql запрос-фильтр yii2

cruim

Только начинаю осваивать yii2. У меня есть таблица, данные которой, выводятся в gridview. Там колонка, в которую напихали дату и время. Мне время не нужно, поэтому хочу вставить такой запрос SELECT DATE(order_createdAt) AS order_date FROMorder``чтобы откидывать время и выводить только дату. Куда нужно вставить это запрос?

'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

        'order_number',
        [
            'attribute' => 'order_createdAt',
            'label' => 'Дата',
'content' => function ($searchModel) {
                    return \Yii::$app->formatter->asDate($searchModel->order_createdAt, 'php:d-m-Y');
                }
            ],
1 ответ

cruim

Никаких дополнительных запросов строить не нужно, а дату можно перед выводом отформатировать разными способами:

Первый способ будет форматировать дату исходя из настроек yii-i18n-formatter, вы можете настроить его желаемым образом в своей конфигурации:

'components' => [
    'formatter' => [
        'locale' => 'ru-RU',
        'timeZone' => 'Europe/Moscow',
        'defaultTimeZone' => 'Europe/Moscow',
        'timeFormat' => 'HH:mm',
        'dateFormat' => 'dd.MM.yyyy',
        'datetimeFormat' => 'dd.MM.yyyy HH:mm'
    ],
    ...
]


'columns' => [
    'order_date:date',
    'created_at:datetime',
    'updated_at:time',
    ...
]

второй и третий способ позволяют выводить желаемый вид даты, игнорируя глобальные настройки форматтера:

'columns' => [
    [
        'attribute' => 'order_date',
        'label' => 'Дата',
        'format' => ['date', 'php:d-m-Y']
    ],
    ...
]

либо

'columns' => [
    [
        'attribute' => 'order_date',
        'label' => 'Дата',
        'content' => function ($model) {
            return \Yii::$app->formatter->asDatetime($model->order_date, 'php:d-m-Y');
        }
    ],
    ...
]

http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html

licensed under cc by-sa 3.0 with attribution.