如何设置ThinkPHP模型中的自定义时间戳字段?

2026-05-06 18:500阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计727个文字,预计阅读时间需要3分钟。

如何设置ThinkPHP模型中的自定义时间戳字段?

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 或数据库实际字段列表中,会被静默丢弃。

阅读全文
标签:PHPThinkPHP

本文共计727个文字,预计阅读时间需要3分钟。

如何设置ThinkPHP模型中的自定义时间戳字段?

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 或数据库实际字段列表中,会被静默丢弃。

阅读全文
标签:PHPThinkPHP