laravel mysql 时区_Laravel时区设置

当使用Laravel操作预设了created_at和updated_at字段的MySQL表时,发现时间与预期不符,少了8小时。原因是Laravel框架默认的时区设置覆盖了MySQL的自动时间功能。解决方案是在`config/app.php`中将时区设置为`'UTC'`或`'Asia/Shanghai'`。此外,可以通过在模型中设定`public $timestamps = false;`禁用Laravel的自动时间戳更新功能。
摘要由CSDN通过智能技术生成

在设计数据表的时候,已经通过Navicat工具创建了两个字段,created_at和updated_at。created_at字段默认为CURRENT_TIMESTAMP,updated_at字段默认为ON UPDATE CURRENT_TIMESTAMP;其实Mysql是可以控制created_at字段在创建时的时间作为值,而updated_at字段会根据更新时的时间随之变动。

但是当我们使用Laravel框架来操作数据表的时候,时间却不是依据Mysql的自有功能来设置的,而被Laravel框架给改变了,并且还少了8小时。如果要解决这个,就需要去设置Laravel框架的时区,在配置文件config/app.php中修改:

'timezone' => 'UTC',

只要将上面的UTC改为UTC或Asia/Shanghai

'timezone'='UTC',

设置

'timezone'='Asia/Shanghai',

那么从Laravel框架里的源码得知,Laravel确实是通过PHP代码来更新updated_at,

# vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasTimestamps.php

protected function updateTimestamps(){

$time = $this->freshTimestamp();

if (! is_null(static::UPDATED_AT) && ! $this->isDirty(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值