Laravel时区设置
简介在做博客的过程中,发现updated_at为什么时间会少8个小时,原来这跟Laravel的时区有关。那么我们如何理解Laravel的created_at或updated_at两个字段是如何控制的呢?还有就是如果我们不想使用该功能又如何屏蔽呢?后面我们还将探究下Laravel相关源码。
在设计数据表的时候,已经通过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(static::UPDATED_AT)) {
$this->setUpdatedAt($time);
}
if (! $this->exists && ! is_null(static::CREATED_AT) &&
! $this->isDirty(static::CREATED_AT)) {
$this->setCreatedAt($time);
}
}
从以上代码我们就可以得知,只要数据不存在就会设置created_at字段的值,存在与不存在都会去设置updated_at字段。所以将我们数据表设置的自有的机制给覆盖了。如果大家不想使用该功能,可以在模型中去掉Laravel自带的这种功能。只需要在每个模型文件中加上public $timestamps = false;如下:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
/**
* 该模型是否被自动维护时间戳
*
* @var bool
*/
public $timestamps = false;
}
#以上代码来源于Laravel文档,https://laravel-china.org/docs/laravel/5.6/eloquent/1403
nodejs中使用npm和yarn,使用最新阿里云镜像 aliyun mirror,网上很多还是文章用的是下面这个地址~~yarn config set registry https://registry.npm.taobao.org~~
GoLand+Delve(dlv) 远程调试
php中的array_walk_recursive函数对数组中的每个成员递归地应用用户函数
you-get是一个基于Python的开源命令行工具,主要用于下载来自多个视频网站的视频、音频和图片资源。它支持YouTube、Bilibili、Vimeo等平台,可通过简单命令快速获取下载链接并支持自定义保存路径和格式。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。