web-dev-qa-db-fra.com

Obtenir la valeur d'attribut précédente dans l'événement de modèle Eloquent

Existe-t-il un moyen de voir la valeur ancienne/précédente de l'attribut d'un modèle dans son événement saving ou updating?

par exemple. Est-ce que quelque chose comme ce qui suit est possible:

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

Ok, j'ai trouvé cela tout à fait par hasard, car ce n'est pas dans la documentation pour le moment ...

Il existe une méthode getOriginal() qui renvoie un tableau des valeurs d'attribut d'origine:

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

Laravel frappe encore!

Attention, il ignore le casting de type de modèle.

117
coatesap

Dans Laravel 4.0 et 4.1, vous pouvez vérifier avec méthode isDirty () :

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

Vous pouvez surcharger les méthodes, puis appeler la méthode parent.

1
Half Crazed