Подтвердить что ты не робот

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

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

например. Возможно следующее:

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

Ответ 1

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

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

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

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

Будьте осторожны, он игнорирует тип модели приведения.

Ответ 2

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

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

Ответ 3

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