【问题标题】:Laravel 5.1 - Save in one timezone, display in anotherLaravel 5.1 - 在一个时区保存,在另一个时区显示
【发布时间】:2016-07-20 01:39:33
【问题描述】:

我使用的是 Laravel 5.1,我需要数据库中的所有内容都采用 UTC 格式。但是在显示数据时,它必须在时区“欧洲/卢布尔雅那”中(也需要根据 DST 更改显示)。

应用程序已经很大了,所以我想在尽可能少的地方进行更改。这样做的最佳方法是什么?

到目前为止,我想到的要么是扩展模型类并为 created_at/updated_at 设置访问器/突变器(然后我必须在所有 x 模型中更改它),要么只是为这些访问器/突变器创建一个特征并将其放入所有型号。

但问题在于,某些模型不仅仅是 created_at/updated_at,我需要为每个模型手动添加这些修改器/访问器。

有没有更好的方法?如果没有,创建一个 trait 是否有意义,或者创建某种类型的主模型并将其扩展到任何地方是否更好?

【问题讨论】:

    标签: laravel laravel-5 php-carbon


    【解决方案1】:

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

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

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

    【讨论】:

    • 特征就是这样。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 2013-12-03
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多