75

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

例如。是否可能类似于以下内容:

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

3 回答 3

172

好的,我很偶然地发现了这个,因为它目前不在文档中......

有一种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忽略属性类型转换。

于 2013-06-28T15:41:49.837 回答
43

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

User::updating(function($user)
{
    if ($user->isDirty('username')){
        doSomething();
    }
});
于 2014-08-29T14:31:17.617 回答
-2

您可以重载方法,然后调用父方法。

于 2013-06-28T14:46:44.310 回答