web-dev-qa-db-ja.com

Eloquentモデルイベントの前の属性値を取得する

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

例えば。次のようなものが可能です:

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

わかりました、現時点ではドキュメントにないので、偶然これを見つけました...

元の属性値の配列を返すgetOriginal()メソッドが利用可能です:

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

Laravelが再び攻撃します!

注意してください、それはモデル型のキャストを無視します。

117
coatesap

Laravel 4.0および4.1では、 isDirty()メソッド で確認できます。

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

メソッドをオーバーロードしてから、親メソッドを呼び出すことができます。

1
Half Crazed