我试图在数据库中插入一个 time.Now() 字段,但不断发生的是时间向前移动到 UTC。我理解这个想法是在呈现给用户时始终转换为本地时间。问题是我继承了这个系统,目前还很容易改变。
有小费吗?我看到您可以在 DSN 中设置 loc,但它没有解释将其更改为什么,也没有解释其实际效果,因此我很感激那里的信息。
编辑:一些信息,它是 MySQL DB,使用 go-mysql 1.1 和 go 1.6.3。正在将数据插入到 DATETIME 字段中。
插入时数据不正确。GORM Debug 显示一次,MySQL 查询记录器显示它向前移动。
我发现问题在于 go-mysql 驱动程序自动将时间转换为 UTC,这可以使用 DSN 中的 loc 参数进行更改。然而,这也改变了时间的返回方式。
要解决此问题,请将 loc=Local 添加到您的 DSN。
在新的 Laravel Resource 类中,您可以根据自己的喜好删除属性。
如果要返回很多项,可以使用该函数
Resource::collection()
Run Code Online (Sandbox Code Playgroud)
但这并不能让您在一处添加元数据。输入一个集合,太好了,这是一个很好的格式的许多项目,能够添加元数据。但是,您不能做的是过滤您必须像使用资源一样隐藏属性的集合。我能看到的唯一方法是
foreach ($this->collection as $item) {
if ($notAdmin) {
$temp = array_except($item->toArray(), ['secret']);
}
$temp['links'] = ['self' => route('restaurant.show', [$item])];
$data[] = $temp;
}
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?这似乎是资源集合的一个被忽视的巨大能力