Laravel 5.1 - сохранить в одном часовом поясе, отобразить в другом

Я использую Laravel 5.1, и мне нужно, чтобы все в моей базе данных было в формате UTC. Но при отображении данных они должны находиться в часовом поясе «Европа / Любляна» (также отображение должно меняться в зависимости от летнего времени).

Приложение уже достаточно велико, поэтому я хочу поменять его как можно меньше. Как лучше всего это сделать?

До сих пор я думал о расширении класса модели и настройке аксессуаров / мутаторов (тогда я должен изменить его во всех x-моделях) для created_at / updated_at или просто создать черту для этих аксессуаров / мутаторов и поместить его во все модели.

Но проблема в том, что некоторые модели имеют больше, чем просто created_at / updated_at, и мне нужно добавить эти мутаторы / аксессоры вручную для каждой модели.

Есть ли способ лучше? А если нет, имеет ли смысл создавать черту или лучше создать какую-то мастер-модель и распространять ее повсюду?


person DevK    schedule 31.03.2016    source источник


Ответы (1)


Вы можете добавить дополнительные поля даты в свой защищенный массив дат в своей модели, что заставит Laravel возвращать их как объекты даты:

protected $dates = ['created_at', 'updated_at', 'deleted_at', 'additional_field'];

Затем, как вы упомянули, вы можете настроить аксессоры для изменения ваших часовых поясов даты при их извлечении. Я лично создал бы черту, чтобы делиться любыми общими средствами доступа к дате между вашими моделями, а не расширять модель напрямую.

person Tim Sheehan    schedule 31.03.2016
comment
Черт побери. Спасибо - person DevK; 31.03.2016