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

coa*_*sap 48 php laravel eloquent laravel-4

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

例如.有类似以下可能:

User::updating(function($user)
{
    if ($user->username != $user->old->username) doSomething();
});
Run Code Online (Sandbox Code Playgroud)

coa*_*sap 122

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

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

User::updating(function($user)
{
    $original = $user->getOriginal();
    if ($user->username != $original['username']) {
        doSomething();
    }
});
Run Code Online (Sandbox Code Playgroud)

Laravel再次罢工!

  • 请注意,它忽略模型类型转换。 (2认同)
  • 请注意,从 Laravel 7.x 开始,此方法已重命名为“getRawOriginal()”。请参阅升级指南:https://laravel.com/docs/7.x/upgrade (2认同)

Ola*_*Ola 32

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

User::updating(function($user)
{
    if ($user->isDirty('username')){
        doSomething();
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 这没有得到之前的值 (2认同)