如何设置ThinkPHP模型中的时间戳字段?
- 内容介绍
- 文章标签
- 相关推荐
本文共计956个文字,预计阅读时间需要4分钟。
在ThinkPHP中使用模型保存数据时,若发现`createTime`或`updateTime`字段未自动写入,可能是时间戳功能未启用或字段配置不匹配。以下是解决此问题的步骤:
一、启用模型自动时间戳功能
ThinkPHP默认关闭模型级自动时间戳,必须显式开启才能触发字段自动写入行为。该设置优先于全局配置,且仅对当前模型生效。
1、在模型类中添加 protected 属性:$autoWriteTimestamp = true;
2、若需指定时间格式(如 datetime 而非 int),可设为:$autoWriteTimestamp = 'datetime';
立即学习“PHP免费学习笔记(深入)”;
3、确认该模型未继承自禁用时间戳的父类,且未被中间件或钩子动态关闭时间戳写入。
二、自定义时间戳字段名
当数据库表中时间字段名不是默认的 create_time 和 update_time 时,必须在模型中精确声明对应字段名,框架不会自动转换驼峰或下划线命名。
本文共计956个文字,预计阅读时间需要4分钟。
在ThinkPHP中使用模型保存数据时,若发现`createTime`或`updateTime`字段未自动写入,可能是时间戳功能未启用或字段配置不匹配。以下是解决此问题的步骤:
一、启用模型自动时间戳功能
ThinkPHP默认关闭模型级自动时间戳,必须显式开启才能触发字段自动写入行为。该设置优先于全局配置,且仅对当前模型生效。
1、在模型类中添加 protected 属性:$autoWriteTimestamp = true;
2、若需指定时间格式(如 datetime 而非 int),可设为:$autoWriteTimestamp = 'datetime';
立即学习“PHP免费学习笔记(深入)”;
3、确认该模型未继承自禁用时间戳的父类,且未被中间件或钩子动态关闭时间戳写入。
二、自定义时间戳字段名
当数据库表中时间字段名不是默认的 create_time 和 update_time 时,必须在模型中精确声明对应字段名,框架不会自动转换驼峰或下划线命名。

