codeigniter 可自动插入时间戳,需数据库字段设为 datetime 或 timestamp 类型,模型中启用 $use_timestamps = true 并配置 $created_field、$updated_field 等属性,配合 php 时区设置确保时间一致。

CodeIgniter 中插入时间戳并自动生成,核心在于模型层配合数据库字段设置与框架的自动填充机制。不需要手动写 date('Y-m-d H:i:s'),合理配置后可由框架自动处理。
数据库字段需设为 DATETIME 或 TIMESTAMP 类型
确保对应的时间字段(如 created_at、updated_at)在 MySQL 中类型为 DATETIME 或 TIMESTAMP。若用 TIMESTAMP 且希望数据库自动初始化,可设默认值:CURRENT_TIMESTAMP;如需自动更新,加 ON UPDATE CURRENT_TIMESTAMP。但 CodeIgniter 更推荐由 PHP 层控制,避免数据库与应用逻辑耦合。
模型中启用自动时间戳填充
在模型类中启用 $use_timestamps = TRUE;,并指定字段名:
-
默认字段名:
created_at和updated_at -
自定义字段名:通过
$created_field和$updated_field设置,例如:protected $created_field = 'add_time'; -
仅插入时填充:设
$set_created = TRUE;(默认开启) -
更新时填充:设
$set_updated = TRUE;(默认开启)
插入/更新操作无需手动传时间字段
调用 $this->model->insert($data) 或 $this->model->update($id, $data) 时,只要数据数组中不包含 created_at 或 updated_at 字段,框架就会自动注入当前时间(使用 date('Y-m-d H:i:s') 格式)。若显式传入这些字段,框架将跳过自动填充 —— 这可用于特殊场景(如导入历史数据)。
确保时区一致
PHP 默认时区影响生成的时间戳。在 application/config/config.php 中设置:
date_default_timezone_set('Asia/Shanghai');
或在 index.php 开头统一设定。避免服务器系统时区、PHP 时区、MySQL 时区不一致导致时间偏差。











