Laravel:更新模型数据时避免修改时间戳

碧海醫心
发布: 2025-10-18 08:55:34
原创
780人浏览过

laravel:更新模型数据时避免修改时间戳

本文旨在帮助 Laravel 开发者理解如何在更新现有模型数据时,避免自动更新 `created_at` 和 `updated_at` 时间戳。我们将分析两种常用的方法,解释其背后的原理,并提供更可靠的解决方案,确保数据更新的准确性和一致性。

在 Laravel 中,模型默认会自动维护 created_at 和 updated_at 两个时间戳字段,分别记录创建时间和更新时间。然而,在某些场景下,我们可能需要更新模型数据,但又不希望修改这两个时间戳。本文将探讨如何在 Laravel 中实现这一目标,并深入解析不同方法的差异。

方法一:save(['timestamps' => false]) 的问题

初学者可能会尝试使用 save(['timestamps' => false]) 方法来禁用时间戳更新。例如:

$manual_ticket->status = "Queued";
$manual_ticket->initiator_id = null;
$manual_ticket->save(['timestamps' => false]);
登录后复制

然而,这种方法通常 无效。这是因为 Laravel 的 save 方法在内部会调用 finishSave 方法,而 finishSave 方法只会识别 touch 键作为数组参数,忽略其他任何键。因此,传递 ['timestamps' => false] 并不会阻止时间戳的更新。

方法二:$timestamps = false 的正确用法

更有效的方法是在模型实例上直接设置 $timestamps 属性为 false:

$manual_ticket->status = "Queued";
$manual_ticket->initiator_id = null;
$manual_ticket->timestamps = false;
$manual_ticket->save();
登录后复制

这种方法之所以有效,是因为它直接修改了模型本身的属性,告知 Laravel 在保存时不要自动更新时间戳。

原理分析:

图改改
图改改

在线修改图片文字

图改改 455
查看详情 图改改

当 $timestamps 属性设置为 false 时,Laravel 的 Eloquent 模型在执行 save 操作时,会跳过更新 created_at 和 updated_at 字段的步骤。 本质上,它是在模型级别禁用了时间戳的自动维护。

更优雅的解决方案:saveQuietly() 方法

除了上述方法外,Laravel 还提供了一个更优雅的解决方案:saveQuietly() 方法。

$manual_ticket->status = "Queued";
$manual_ticket->initiator_id = null;
$manual_ticket->saveQuietly();
登录后复制

saveQuietly() 方法不仅可以避免更新时间戳,还可以防止触发任何模型事件(例如 creating, updating, saving 等)。 这在需要静默更新数据,避免触发不必要副作用的场景下非常有用。

适用场景:

  • 后台数据同步
  • 批量数据更新
  • 避免触发关联模型事件

注意事项

  • 模型事件: 使用 $timestamps = false 方法仍然会触发模型事件。如果需要完全静默更新,请使用 saveQuietly() 方法。
  • 全局禁用: 如果需要在整个应用中禁用时间戳,可以在模型类中设置 $timestamps = false;。 但是,请谨慎使用,因为它会影响所有基于该模型的查询和操作。
  • 版本兼容性: 本文中的方法适用于 Laravel 5.5 及更高版本。 在更早的版本中,可能需要使用其他方法来实现相同的功能。

总结

在 Laravel 中,避免更新模型时间戳有多种方法。 $timestamps = false 可以有效禁用时间戳的自动更新,而 saveQuietly() 方法则提供了更全面的解决方案,可以防止更新时间戳并避免触发模型事件。 选择哪种方法取决于具体的应用场景和需求。 建议优先使用 saveQuietly(),因为它更简洁明了,并且能更好地控制数据更新的行为。

以上就是Laravel:更新模型数据时避免修改时间戳的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号