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
 ]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值