讲师中心 微信公众号
AI工具推荐 视频效率加速

Yii框架模型复制时间戳字段重置实现

千雪姑娘_8150

千雪姑娘_8150

发布时间:2026-08-22 14:51:27

|

142人浏览过

|

来源于php中文网

原创

Yii中模型复制后需手动重置时间戳字段并设isNewRecord为true,才能触发beforeSave自动填充;推荐封装duplicate()方法统一处理created_at、updated_at等字段清空与新记录标记。

yii框架模型复制时间戳字段重置实现

在 Yii 框架中,模型复制(如使用 clone$model->replicate())时,默认会保留原始记录的时间戳字段(created_atupdated_at),这通常不符合业务需求——新记录应生成新的时间戳。

理解时间戳自动填充机制

Yii 通过 ActiveRecord::beforeSave() 自动处理时间戳,前提是:

  • 模型类启用了时间戳行为(如继承 yii\db\ActiveRecord 并配置了 createdAtAttribute/updatedAtAttribute
  • 对应字段未被显式赋值(即为 null 或未设置)
  • isNewRecordtrue(新增场景)

复制模型后,isNewRecord 默认仍为 false,且时间戳字段已有值,因此不会触发重置。

手动重置时间戳字段

最直接的方式是在复制后清空时间戳字段,并标记为新记录:

$newModel = clone $oldModel;
$newModel->id = null; // 清除主键
$newModel->created_at = null;
$newModel->updated_at = null;
$newModel->isNewRecord = true; // 关键:触发 beforeSave 的时间戳填充逻辑

保存前确保数据库字段允许 NULL 或默认由 DB 自动生成(如 MySQL 的 CURRENT_TIMESTAMP),否则需在模型中显式赋值:

Yii Framework 2.0.51
Yii Framework 2.0.51

Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。

下载
  • $newModel->created_at = date('Y-m-d H:i:s');
  • $newModel->updated_at = date('Y-m-d H:i:s');

封装为模型方法提升复用性

在模型类中添加一个 duplicate() 方法,统一处理复制逻辑:

public function duplicate()
{
    $clone = clone $this;
    $clone->id = null;
    $clone->isNewRecord = true;

    // 重置时间戳字段(适配不同命名)
    foreach (['created_at', 'updated_at', 'createdAt', 'updatedAt'] as $attr) {
        if ($this->hasAttribute($attr)) {
            $clone->{$attr} = null;
        }
    }

    return $clone;
}

调用:$newModel = $oldModel->duplicate(); $newModel->save();

使用行为(Behavior)自动管理

若项目中大量使用复制操作,可自定义行为,在 afterClone 事件或 duplicate() 方法中自动清理时间戳:

  • 继承 yii\base\Behavior
  • 监听模型克隆后的钩子(需配合自定义克隆逻辑)
  • 或覆盖模型的 __clone() 方法(注意避免循环引用)

该方式适合团队规范统一,但对简单场景略显冗余。

核心在于明确 isNewRecord 状态与时间戳字段值的协同关系,不依赖框架“自动推断”,主动控制才能可靠生效。

热门AI工具

更多
UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

更多
PHP Yii框架专题
PHP Yii框架专题

本专题专注于PHP主流框架Yii的应用,系统讲解MVC架构、路由机制、数据库操作、表单处理、安全验证与RESTful API 开发等核心内容。通过电商网站、后台管理系统与内容管理平台等实战项目,帮助学员快速掌握Yii框架的开发技巧与实战经验。

2730

2025.09.04

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

20

2026.09.20

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

0

2026.09.20

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

180

2026.09.16

ai生成视频的工具免费版合集
ai生成视频的工具免费版合集

本专题汇总了当前免费AI生成视频工具的排行榜与推荐清单,涵盖seko、讯飞智作、AniShort及剧云、Lovart等多模型集成平台。同时整理了各工具的免费额度、输出时长、水印政策及适用场景差异,助您快速选择合适工具开启AI视频创作。

100

2026.09.16

Pandas时间序列分析与可视化报表
Pandas时间序列分析与可视化报表

本专题整理Pandas日期转换、时间索引、重采样、滚动窗口、时区处理、plot绘图、Styler表格样式和报表输出方法。

80

2026.09.16

Pandas数据筛选索引与清洗处理
Pandas数据筛选索引与清洗处理

本专题整理Pandas中的loc、iloc、条件筛选、query查询、缺失值处理、重复值删除、类型转换和字符串列清洗方法。

60

2026.09.16

Pandas数据读取导入与文件导出处理
Pandas数据读取导入与文件导出处理

本专题整理Pandas读取CSV、Excel、JSON、SQL、Parquet等文件的方法,以及to_csv、to_excel、to_sql和to_parquet等常用数据导出流程。

40

2026.09.16

GDB怎么设置断点
GDB怎么设置断点

本专题介绍GDB按照函数名、源代码行号和文件位置设置断点的方法,详细说明run、continue、next、step等命令的配合使用,帮助定位程序崩溃、逻辑异常及代码未按预期执行的问题。

400

2026.09.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn