1. ホーム
  2. php

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

2023-10-03 17:21:30

質問

モデルの属性の古い/以前の値を、その saving または updating のイベントですか?

例えば 以下のようなことは可能でしょうか。

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

どのように解決するのですか?

OK、私は偶然これを見つけました。今のところドキュメントにはありません。

には 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 は属性型のキャスティングを無視します。