在 Eloquent Updated 事件期间检测特定变化

Kur*_*ucu 4 laravel

使用 Eloquent Events/Observers,是否可以检测更新事件中更新了哪些属性?或者,您能否访问先前/新值以进行比较?

我发现唯一的解决方案是通过检测控制器中已验证请求数据中存在的特定字段来手动触发事件。

mat*_*ard 5

是的,一点没错。您可以使用 Model 类的现有方法来访问各种数据集。以下方法应该对您想要做的事情有所帮助。

getChanges()
获取已更改的属性。(并保存)

$model->getChanges()
Run Code Online (Sandbox Code Playgroud)

getOriginal()
获取模型的原始属性值。

$model->getOriginal()
Run Code Online (Sandbox Code Playgroud)

getDirty()
获取自上次同步以来已更改的属性。(但尚未保存)

$model->getDirty()
Run Code Online (Sandbox Code Playgroud)

  • 我的荣幸!我更新了解释,以更好地表明 `getChanges()` 和 `getDirty()` 之间的区别,因为我最初的记忆不太正确。 (2认同)