75

savingまたはupdatingイベントでモデルの属性の古い/前の値を確認する方法はありますか?

例えば。次のようなことが可能ですか:

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 に答える