如何设置ThinkPHP模型中的自定义时间戳字段?
- 内容介绍
- 文章标签
- 相关推荐
本文共计727个文字,预计阅读时间需要3分钟。
ThinkPHP默认仅识别`create_time`和`update_time`作为时间戳字段,若数据库表使用的是`created_at`和`updated_at`或其它名称,必须显式配置,否则自动写入将失效。
在模型类中设置两个关键属性即可生效:
-
protected $createTime = 'created_at';—— 指定创建时间字段名 -
protected $updateTime = 'updated_at';—— 指定更新时间字段名(设为false可关闭自动更新) - 两者都需配合
protected $autoWriteTimestamp = true;(TP6 默认开启,但建议显式声明)
为什么设置了字段名,插入时还是没写入时间?
常见原因是字段未被纳入数据写入白名单。ThinkPHP默认对字段做安全过滤,如果 created_at 不在模型的 $schema 或数据库实际字段列表中,会被静默丢弃。
本文共计727个文字,预计阅读时间需要3分钟。
ThinkPHP默认仅识别`create_time`和`update_time`作为时间戳字段,若数据库表使用的是`created_at`和`updated_at`或其它名称,必须显式配置,否则自动写入将失效。
在模型类中设置两个关键属性即可生效:
-
protected $createTime = 'created_at';—— 指定创建时间字段名 -
protected $updateTime = 'updated_at';—— 指定更新时间字段名(设为false可关闭自动更新) - 两者都需配合
protected $autoWriteTimestamp = true;(TP6 默认开启,但建议显式声明)
为什么设置了字段名,插入时还是没写入时间?
常见原因是字段未被纳入数据写入白名单。ThinkPHP默认对字段做安全过滤,如果 created_at 不在模型的 $schema 或数据库实际字段列表中,会被静默丢弃。

