Получить предыдущее значение атрибута в событии красноречивой модели


Есть ли способ увидеть старое/предыдущее значение атрибута модели в ее событии saving или updating?

Например. Возможно ли что-то вроде следующего:

User::updating(function($user)
{
    if ($user->username != $user->old->username) doSomething();
});
Author: coatesap, 2013-06-28

3 answers

Хорошо, я нашел это совершенно случайно, так как в настоящее время этого нет в документации...

Существует доступный метод getOriginal(), который возвращает массив исходных значений атрибутов:

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

Ларавель снова наносит удар!

 92
Author: coatesap, 2014-08-30 07:00:40

В Laravel 4.0 и 4.1 вы можете проверить с помощью метода IsDirty():

User::updating(function($user)
{
    if ($user->isDirty('username')){
        doSomething();
    }
});
 22
Author: Ola, 2014-08-29 14:31:17

Вы можете перегрузить методы, а затем вызвать родительский метод.

 1
Author: Half Crazed, 2013-06-28 14:46:44