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

Laravel 5.1-在一个时区保存,在另一个时区显示,laravel,laravel-5,php-carbon,Laravel,Laravel 5,Php Carbon,我使用的是Laravel 5.1,我需要数据库中的所有内容都采用UTC格式。但当显示数据时,它必须位于“欧洲/卢布尔雅那”时区(显示也需要根据DST进行更改) 这个应用程序已经相当大了,所以我想在尽可能少的地方更改它。这样做的最佳方式是什么 到目前为止,我想到的要么是为created_at/updated_at扩展model类并设置accessor/mutators(我必须在所有x模型中更改它),要么只是为那些accessor/mutators创建一个trait并将其放入所有模型中 但问题是,有

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

这个应用程序已经相当大了,所以我想在尽可能少的地方更改它。这样做的最佳方式是什么

到目前为止,我想到的要么是为created_at/updated_at扩展model类并设置accessor/mutators(我必须在所有x模型中更改它),要么只是为那些accessor/mutators创建一个trait并将其放入所有模型中

但问题是,有些模型不仅仅是创建了_at/更新了_at,我需要为每个模型手动添加这些变体/访问器


还有更好的办法吗?如果没有,创建一个trait是否有意义,还是创建某种类型的主模型并将其扩展到所有位置更好?

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

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

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

trait就是这样。谢谢