我看到有一个名为 wasChanged()
的函数您可以在其中检查更新时属性是否已更改。不是肮脏,而是改变并坚持
但是我试图在我的模型事件启动函数中检查这一点:
public static function boot()
{
parent::boot();
self::updated(function($appointment){
if($appointment->wasChanged('appointment_date')) {
// do something
}
});
}
这对我来说永远不起作用。我有什么想法可以检查这个吗?
isDirty 函数具有不同的行为,因为它用于检查请求中是否提交了属性。
最佳答案
虽然这篇文章很旧,但我会插入我的答案,因为您尝试解决此问题的最初方法是最正确的方法。 你一定是在使用boot方法之前就搞错了。 我连续使用它,但我没有看到错误的原因。 下面的代码继续有效。并于 2021 年刚刚完成了 Laravel 5、7 和 8 的测试。
protected static function boot()
{
parent::boot();
self::updated(function ($user) {
if($user->wasChanged('password')){
$user->notify(new PasswordChanged($user));
}
});
}
下面的代码于 2021 年更新和测试,完美适用于 laravel 7 和 8。
protected static function booted()
{
self::updated(function ($user) {
if($user->wasChanged('password')){
$user->notify(new PasswordChanged($user));
}
});
}
我放置了两种效果很好的形状。 如果您也遇到类似上面的问题,那么问题很可能超出了这个范围。
关于php - 检查 Laravel 5.5 模型事件中的属性是否已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56316462/