ThinkPHP5开发连载五十模型-自动时间戳

上一篇文章讲解“模型-修改器”,本篇文章讲解“模型-自动时间戳”。

系统支持自动写入创建和更新的时间戳字段(默认关闭),有两种方式配置支持。

1. 开启自动时间戳

全局开启,在数据库配置文件中进行设置:

在需要的模型类里面单独开启:

又或者首先在数据库配置文件中全局开启,然后在个别不需要使用自动时间戳写入的模型类中单独关闭:

默认的创建时间字段为create_time,更新时间字段为update_time,支持的字段类型包括timestamp/datetime/int。写入数据的时候,系统会自动写入create_time和update_time字段,而不需要定义修改器。

一旦配置开启的话,会自动写入create_time和update_time两个字段的值,默认为整型(int)

2. 自动时间戳使用

1)添加

使用自动时间戳,需要将数据库中添加create_time与update_time字段

数据库配置文件开启配置项

新建User模型

新建Index控制器,并创建timeAdd添加数据方法

浏览器访问后,查看数据库

2)修改

Index控制器中,添加timeUpdate方法,就修改timeAdd方法添加的数据即可

浏览器访问,查看数据库

3. 字段类型

字段名默认创建时间字段为create_time,更新时间字段为update_time,支持的字段类型包括timestamp/datetime/int,默认为整型int,如果你的时间字段不是int类型的话,可以直接使用:

修改数据库表create_time与update_time字段的类型为datetime

修改数据库配置文件

浏览器访问timeAdd方法与timeUpdate方法,并查看数据库

注:timeUpdate方法修改timeAdd添加的数据即可。

注意:

1. timestamp类型使用方法同上。

2. 一般为int类型,没有特殊要求默认即可。

4. 自定义自动时间戳字段名

如果你的数据表字段不是默认值的话,可以在对应模型中按照下面的方式定义:

修改数据库中字段名

浏览器访问timeAdd方法与timeUpdate方法,查看数据库

注:修改数据库配置项auto_timestamp为true

5. 关闭自动写入

1)单独关闭某个字段

如果你只需要使用create_time字段而不需要自动写入update_time,则可以单独设置关闭某个字段,在模型中进行设置:

在User模型中设置关闭自动写入update_time字段,再重新访问timeUpdate方法,访问后查看数据库,update_time字段是否自动写入。

注意:

1. 如果某个模型不需要自动写入可在模型中设置:

protected $autoWriteTimestamp = false;

2. 如果关闭全局自动写入,设置数据库配置文件的配置项:

'auto_timestamp' => false,

2)动态关闭时间戳写入功能

支持动态关闭时间戳写入功能,如果在添加或修改时不希望更新时间,那么可以使用isAutoWriteTimestamp方法:

修改Index控制器中的timeAdd方法,动态关闭时间戳写入功能

浏览器访问,查看数据库

6. 自动时间戳字段输出格式

1)从数据库获取后输出自动时间戳。

在Index控制器中新建getTime方法,获取数据库中数据,并输出自动时间戳字段。

浏览器访问

注意:

1. 时间字段输出的时候会自动进行格式转换,如果不希望自动格式化输出,可以把数据库配置文件的datetime_format参数值改为false。

【例1】修改datetime_format参数,数据库配置文件

浏览器访问getTime方法:

ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员

关注卓象程序员,定期发布技术文章

下一篇讲解“模型-只读字段”

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180912A158KP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券