php - 检查 Laravel 5.5 模型事件中的属性是否已更改

标签 php laravel laravel-5 model

我看到有一个名为 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/

相关文章:

php - GET 请求与 JavaScript

php - &$PHP 中的变量

php - Level 5 如何检测哪个文件错误

Laravel 将 Auth 传递给 vue SPA

php - 将中间件附加到所有方法

javascript - 获取 html 复选框列表选中值到隐藏字段

php - <?php echo $session_id ?> 和 <?= $session_id ?> 的区别

mysql - 在mysql数据库laravel中保存多个整数

laravel - 如何在 Session 上放置和检索 Laravel 集合对象

php - Laravel 插入到 3 个相关表