webentwicklung-frage-antwort-db.com.de

Laravel: Prüfen Sie mit Observer, ob die Spalte beim Update geändert wurde

Ich verwende einen Observer , um zu sehen, ob ein Benutzer aktualisiert wurde.

Wenn ein Benutzer updated ist, möchte ich prüfen, ob seine email geändert wurde. 

Ist so etwas möglich?

class UserObserver
{


    /**
     * Listen to the User created event.
     *
     * @param  \App\User  $user
     * @return void
     */
    public function updating(User $user)
    {
      // if($user->hasChangedEmailInThisUpdate()) ?
    }

}
6
Adam

Wie tadman bereits in den Kommentaren gesagt hat, führt die Methode isDirty den Trick aus:

class UserObserver
{


    /**
     * Listen to the User created event.
     *
     * @param  \App\User  $user
     * @return void
     */
    public function updating(User $user)
    {
      if($user->isDirty('email')){
        // email has changed
        $new_email = $user->email; 
        $old_email = $user->getOriginal('email');
      }
    }

}
6
Adam

Sie müssen den Benutzer nicht erneut aus der Datenbank abrufen. Folgendes sollte funktionieren:

public function updating(User $user)
{
  if($user->isDirty('email')){
    // email has changed
    $new_email = $user->email; 
    $old_email = $user->getOriginal('email'); 
  }
}
0
user1415066