在 Eloquent 模型事件中获取以前的属性值

2022-08-30 08:28:37

有没有办法在模型的属性或事件中查看模型属性的旧值/先前值?savingupdating

例如。是否可能出现以下情况:

User::updating(function($user)
{
    if ($user->username != $user->old->username) doSomething();
});

答案 1

好吧,我偶然发现了这一点,因为它目前不在文档中...

有一个方法可以返回原始属性值的数组:getOriginal()

User::updating(function($user)
{
    if ($user->username != $user->getOriginal('username')) {
        doSomething();
    }

    // If you need multiple attributes you may use:
    // $originalAttributes = $user->getOriginal();
    // $originalUsername = $originalAttributes['username']; 
});

请注意,在 Laravel 7 之前会忽略属性类型转换。getOriginal


答案 2

在Laravel 4.0和4.1中,您可以使用isDirty()方法进行检查:

User::updating(function($user)
{
    if ($user->isDirty('username')){
        doSomething();
    }
});

推荐