在 laravel 中,当子模型(如 comment)更新时,可通过 `touches` 属性自动更新直接父模型(如 post)的 `updated_at`;若需进一步更新“祖父级”模型(如 user),需结合模型事件手动触发 `touch()`,本文详解实现方法与最佳实践。
在 Laravel 的 Eloquent ORM 中,$touches 属性仅支持单层向上触达——即子模型更新时自动调用其直接关联父模型的 touch() 方法。例如,Comment 模型设置 protected $touches = ['post'],可在评论更新时自动刷新对应 Post 的 updated_at;但该机制不会递归生效,因此在 Post 模型中声明 protected $touches = ['user'] 并不能使 User 时间戳随 Comment 更新而变更。
要实现跨两级的级联时间戳更新(如 Comment → Post → User),推荐采用 Eloquent 模型事件 + 显式 touch() 调用 的组合方案。核心思路是:在中间模型(Post)监听自身 updated 事件,并主动触达其关联的 User 模型。
以下为具体实现步骤:
belongsTo(User::class);
}
/**
* 模型启动时注册事件监听器
*/
protected static function booted()
{
static::updated(function (self $post) {
// 确保关联关系存在且未软删除,避免异常
if ($post->user && ! $post->user->trashed()) {
$post->user->touch();
}
});
}
}? 说明:static::updated() 是静态闭包监听器,在每次 Post 实例被成功更新后执行;$post->user->touch() 会更新该用户的 updated_at(仅限 updated_at 字段,默认不修改 created_at)。
// 创建用户、文章、评论 $user = User::create(['name' => 'Alice']); $post = $user->posts()->create(['title' => 'Hello']); $comment = $post->comments()->create(['body' => 'First comment']); // 初始时间戳 dump($user->updated_at); // 2025-01-01 10:00:00 dump($post->updated_at); // 2025-01-01 10:00:05 // 更新评论 → 触发 Post::touches → 更新 Post.updated_at $comment->update(['body' => 'Updated comment']); // 此时 Post.updated_at 变更,同时因 Post::updated 事件触发,User.updated_at 也同步更新 dump($user->fresh()->updated_at); // 2025-01-01 10:00:10 ← 已更新!
通过上述方式,你即可精准、可靠地实现 Laravel 中任意深度的父模型时间戳级联更新。
# php
# laravel
# app
# 工具
# 多级联动
# Static
# 递归
# 循环
# protected
# 闭包
# 事件
# 异步
# 数据库
# 级联
# 已被
# 可在
# 重写
# 不被
# 能使
# 可通过
# 仅限
# 该用户
相关文章:
如何在Windows环境下新建FTP站点并设置权限?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
青岛网站建设如何选择本地服务器?
实例解析angularjs的filter过滤器
存储型VPS适合搭建中小型网站吗?
安徽网站建设与外贸建站服务专业定制方案
学校为何禁止电信移动建设网站?
建站主机默认首页配置指南:核心功能与访问路径优化
常州企业网站制作公司,全国继续教育网怎么登录?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
网站制作说明怎么写,简述网页设计的流程并说明原因?
建站主机类型有哪些?如何正确选型
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
如何通过可视化优化提升建站效果?
建站之星导航配置指南:自助建站与SEO优化全解析
网站制作企业,网站的banner和导航栏是指什么?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何在万网主机上快速搭建网站?
,制作一个手机app网站要多少钱?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
音乐网站服务器如何优化API响应速度?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
如何通过虚拟机搭建网站?详细步骤解析
C#如何在一个XML文件中查找并替换文本内容
深圳网站制作的公司有哪些,dido官方网站?
c++怎么用jemalloc c++替换默认内存分配器【性能】
郑州企业网站制作公司,郑州招聘网站有哪些?
如何用虚拟主机快速搭建网站?详细步骤解析
建站之星CMS建站配置指南:模板选择与SEO优化技巧
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
如何在搬瓦工VPS快速搭建网站?
如何选择CMS系统实现快速建站与SEO优化?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
公司网站制作需要多少钱,找人做公司网站需要多少钱?
已有域名和空间如何快速搭建网站?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
公众号网站制作网页,微信公众号怎么制作?
如何通过VPS搭建网站快速盈利?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
营销式网站制作方案,销售哪个网站招聘效果最好?
如何快速配置高效服务器建站软件?
*请认真填写需求信息,我们会在24小时内与您取得联系。