2016-03-31 2 views
3

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

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

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

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

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

ответ

2

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

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

Тогда, как вы упомянули, вы можете настроить аксессор изменить ваш date timeones, когда они будут восстановлены, я лично создавал бы признак, чтобы делиться любыми общедоступными датами доступа между вашими моделями, а не распространять модель напрямую.

+0

Характеризуется этим. благодаря – devk

Смежные вопросы