在设计数据表的时候,已经通过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(