Вариант использования метода afterFind в модели

Многие хранят дату/время в базе данных в формате timestamp, а точнее хранят ее в колонке с типом integer, посему при выводе возникает необходимость преобразования числа секунд в дату/время, делают это обычно примерно так:

echo date('Y-m-d H:i:s',$model->date);

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

public function afterFind()
    {
        $this->date = date('Y-m-d H:i:s',$this->date);
    }

Хотя еще более элегантно поступать примерно так

public function afterFind()
    {
        $this->date = Yii::$app->formatter->asDatetime($this->date);
    }

При этом в конфигурации приложения должно быть настроено

'components' => [
    'formatter' => [
        'class' => 'yii\i18n\Formatter',
        'datetimeFormat' => 'short',
    ],
]

В качестве формата можно использовать «short», «medium», «long», или «full» или воспользоваться ICU User Guide http://userguide.icu-project.org/formatparse/datetime

А когда нужно выводить:

echo $model->date;
comments powered by HyperComments
Александр Демченко
2015-08-31 05:53:53
parent::afterFind(); необходимо так же вызывать
При копировании материалов обратная ссылка на play-stop.ru желательна обязательна!