Laravel观察员更新/更新

Laravel观察员更新/更新,laravel,laravel-8,observer-pattern,observers,Laravel,Laravel 8,Observer Pattern,Observers,我不知道如何最好地做到这一点。我需要访问is_dirty()以检查特定字段是否已更改,这需要在观察者的“更新”方法中完成。但我只想在更新成功的情况下采取行动 “更新”方法中是否有方法告诉它尝试保存更改,然后查看是否成功 如果不是,那么将更新与更新配对的最佳方式是什么?我是否会在更新中保存一个缓存值,指定相关字段是否已修改,然后在更新中提取该缓存值?或者有更好的方法吗?您可以尝试以下方法: class ModelObserver { public function updated(M

我不知道如何最好地做到这一点。我需要访问
is_dirty()
以检查特定字段是否已更改,这需要在观察者的“更新”方法中完成。但我只想在更新成功的情况下采取行动

“更新”方法中是否有方法告诉它尝试保存更改,然后查看是否成功


如果不是,那么将更新与更新配对的最佳方式是什么?我是否会在更新中保存一个缓存值,指定相关字段是否已修改,然后在更新中提取该缓存值?或者有更好的方法吗?

您可以尝试以下方法:

class ModelObserver
{   
    public function updated(Model $model)
    {
        /**
         * Listening inside 'updated' since we only care about model 
         * updated which have already happened
         */
        if ($model->hasChanged('my-special-field')) {
            // Do something...
        } 
    }
}

您可以阅读更多关于
wasChanged
方法的信息。

对不起,我想我误解了,以为您想在模型更新之前检查
isDirty
。您可以使用
wasChanged('my-field')
查看某个字段是否成功更改。请分享一个简单的代码,以便更好地理解问题。