You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何自定义模型updated事件,按更新字段传递不同参数?

实现方案

Laravel Eloquent 内置了isDirty()方法,可直接检测指定字段是否在本次更新中被修改,直接在updated事件回调中调用该方法判断即可。

改造后的完整代码

public static function boot()
{
    parent::boot();

    self::created(function ($model) {
        /** @var self $model */
        $model->clearCache();
    });

    self::updated(function ($model) {
        /** @var self $model */
        // 检测text字段是否被修改,多个字段可以传数组:->isDirty(['text', '其他字段1', '其他字段2'])
        $needRefresh = $model->isDirty('text') ? 1 : 0;
        $model->clearCache($needRefresh);
    });

    self::deleted(function ($model) {
        /** @var self $model */
        $model->clearCache();
    });
}

补充说明

  • 如果需要同时判断多个指定字段,只要把字段名以数组形式传入isDirty()即可,只要任意一个字段被修改就会返回true
  • 如果需要排除字段更新时触发特殊逻辑,可以反过来用!$model->isDirty('排除的字段')做判断

内容的提问来源于stack exchange,提问作者Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:15:01