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
PHP中使用Skywalking
很多时候我们只希望我们的应用只能启动一次,本文主要介绍下Flutter的windows桌面端如何实现只启动一次的方法。
在前面我们已经介绍了Redis的持久化RDB和AOF。但是很多时候,我们需要考虑很多因素:服务器宕机数据丢失、持久化时的性能开销、持久化文件的大小以及数据恢复速度。RDB持久化,两次快照之间写入的数据可能会丢失,当写入流量较大且数据集也很大时,RDB中系统调用fork()的延迟和内存的开销也是一个问题。但是RDB比AOF文件占用的磁盘空间更小,并且从RDB中恢复数据的速度更快。事实上,我们可以同时启动这两个功能。
dig命令是用于域名查询,可以用于测试域名系统的工作是否正常。如果没有dig命令,请使用:yum install bind-utils 进行安装
平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
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问题