laravel数据模型获取数据库时间
·
今天测试封装代码,使用laravel model获取数据内容的时候,突然发现时间不对
0 => array:6 [▼
"id" => 2
"name" => "JS"
"remarks" => "测试数据"
"created_at" => "2020-09-10T06:15:28.000000Z"
"updated_at" => "2020-09-10T06:15:28.000000Z"
"deleted_at" => null
]
起初我以为是时区的问题,后来我发现并不是,后来查阅资料才发现,laravel7新版本将数据里的时间转换了,解决方式如下:
第一步:找到vendor\laravel\framework\src\Illuminate\Databases\Eloquent\Concerns\HasAttributes.php
第二步:在HasAttributes.php中设置变量
/**
* 是否开启自定义时间
*
* @var bool
*/
protected $whenTime = true;
第三步:在HasAttributes.php中找到serializeDate()方法并重写,代码如下:
/**
* Prepare a date for array / JSON serialization.
*
* @param \DateTimeInterface $date
* @return string
*/
protected function serializeDate(DateTimeInterface $date)
{
return (bool)$this->whenTime ? $date->format('Y-m-d H:i:s') : Carbon::instance($date)->toJSON();
}
最后在自己的数据模型里设置$whenTime属性
/**
* 是否开启自定义时间
*
* @var bool
*/
protected $whenTime = false;
效果:
0 => array:6 [▼
"id" => 2
"name" => "JS"
"remarks" => "测试数据"
"created_at" => "2020-09-10 14:15:28"
"updated_at" => "2020-09-10 14:15:28"
"deleted_at" => null
]
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)