laravel - 如何更改 Laravel 中枢轴上时间戳的日期格式?
问题描述
我正在尝试将整个应用程序中的时间戳(created_at、updated_at、deleted_at)的日期类型从全局更改timestams
为timestampsTz
. 在迁移中没有问题。在单个模型中,因为我可以覆盖$dateFormat
模型的参数。
但是我对包含时间戳的数据透视表有疑问,因为它们没有从我的模型中继承任何参数。
假设我有一个产品和属性表,它们之间有attribute_product枢轴,其中包含 和 之类的value
列timestamps
。如果我尝试使用产品的值和时间戳检索所有属性,我会执行以下操作:$product->attributes
但出现错误:
local.ERROR: Trailing data {"exception":"[object] (InvalidArgumentException(code: 0): Trailing data at \\vendor\\esbot\\carbon\\src\\Carbon\\Carbon.php:910)
[stacktrace]
#0 \\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Eloquent\\Concerns\\HasAttributes.php(716): Carbon\\Carbon::createFromFormat('Y-m-d H:i:s', '2019-06-25 16:1...')
#1 \\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Eloquent\\Concerns\\HasAttributes.php(739): Illuminate\\Database\\Eloquent\\Model->asDateTime('2019-06-25 16:1...')
#2 \\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Eloquent\\Concerns\\HasAttributes.php(532): Illuminate\\Database\\Eloquent\\Model->fromDateTime('2019-06-25 16:1...')
#3 \\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Eloquent\\Model.php(230): Illuminate\\Database\\Eloquent\\Model->setAttribute('created_at', '2019-06-25 16:1...')
#4 \\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Eloquent\\Model.php(248): Illuminate\\Database\\Eloquent\\Model->fill(Array)
...
构建器以正确的格式检索时间戳(例如“2019-06-25 16:17:01+02”),但是当它尝试对相关模型数据透视数据进行水合时,它使用了错误的格式“Ymd H:i:s "并且失败了。
有没有适当的方法来实现这一目标?或者有什么可用的解决方法吗?
任何帮助表示赞赏?提前致谢!
解决方案
您是否尝试过为数据透视表创建中间模型?然后,您应该能够更改该dateFormat
属性。
例如,您可以像这样创建一个数据透视模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Relations\Pivot;
class RoleUser extends Pivot
{
}
并更新另一个模型上的关系以使用该 Pivot 模型。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
/**
* The users that belong to the role.
*/
public function users()
{
return $this->belongsToMany('App\User')->using('App\RoleUser');
}
}
然后因为你有一个 Pivot 模型的类,你应该能够指定格式。
https://laravel.com/docs/5.8/eloquent-relationships#defining-custom-intermediate-table-models
推荐阅读
- angular - 从 Typescript 中的 JSON 响应对象中获取单独的标题行和数据行
- python - 使用 PyECG 包读取 .ecg 文件时的错误消息
- oracle - Oracle sql loader 加载带有标识列的表的时间过长
- python - “return False”完全忽略?
- python - 使用 tf.keras.estimator.model_to_estimator 将 keras 模型转换为估计器模型后使用 estimator.train() 的问题
- rust - 如何在 Gtk-rs 中获取选定列的文本
- python - 带有 Selenium 的 FileNotFoundError (Python 3.8)
- c# - MS Graph:Azure AD - 如何在用户列表中找到源列?
- c# - 如何克服 C# 中的 POST 请求 404 错误?
- python - 模型中自动生成的字段