上一篇文章讲解“模型-修改器”,本篇文章讲解“模型-自动时间戳”。
系统支持自动写入创建和更新的时间戳字段(默认关闭),有两种方式配置支持。
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连载为卓象程序员原创,转载请联系卓象程序员
关注卓象程序员,定期发布技术文章
下一篇讲解“模型-只读字段”
领取专属 10元无门槛券
私享最新 技术干货