Laravel 5.1 - 保存在一个时区,显示在另一个时区

时间:2016-03-31 14:22:54

标签: laravel laravel-5 php-carbon

我使用的是Laravel 5.1,我需要数据库中的所有内容都是UTC格式。但是在显示数据时,它必须在时区  Europe / Ljubljana' (还需要根据DST显示更改)。

该应用已经非常庞大,所以我想在尽可能少的地方进行更改。这样做的最佳方式是什么?

到目前为止,我想到的是扩展模型类并设置存取器/变换器(我必须在所有x模型中更改它)for created_at / updated_at或者只是为那些存取器/变换器创建特征并将其放入所有型号。

但问题是有些模型不仅仅是created_at / updated_at而且我需要手动为每个模型添加这些mutators / accessors。

还有更好的方法吗?如果没有,那么制作一个特征是否有意义,或者创建某种类型的主模型并将它扩展到哪里更好?

1 个答案:

答案 0 :(得分:2)

您可以在模型中的受保护日期数组中添加其他日期字段,这将迫使Laravel将它们作为日期对象返回:

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

然后,正如您所提到的,您可以设置访问者来修改日期时区,我会亲自创建一个特征来共享模型之间的任何常见日期访问器,而不是直接扩展模型。