In Laravel ist saveQuietly() eine für Eloquent-Modelle verfügbare Methode, mit der Sie ein Modell speichern können, ohne Ereignisse wie Erstellen, Erstellen, Aktualisieren, Aktualisieren und andere Eloquent-Ereignisse auszulösen Modellveranstaltungen. Dies kann in Situationen nützlich sein, in denen Sie Daten aktualisieren oder speichern möchten, ohne zusätzliche Aktionen im Zusammenhang mit diesen Ereignissen auszulösen, wie z. B. Protokollierung, Benachrichtigungen oder Datenvalidierung.
Hier ist eine Schritt-für-Schritt-Anleitung mit einem praktischen Beispiel von saveQuietly() in Laravel, einschließlich einer detaillierten Erklärung jedes Teils.
Stellen Sie sich vor, Sie haben ein Benutzermodell und jedes Mal, wenn ein Benutzer aktualisiert wird, wird ein Ereignis ausgelöst, das eine Benachrichtigung an den Benutzer sendet. In bestimmten Fällen (z. B. bei Administratoraktualisierungen oder Wartungsaufgaben im Hintergrund) möchten Sie jedoch möglicherweise Benutzerinformationen stillschweigend aktualisieren, ohne diese Benachrichtigung auszulösen.
In Ihrem Benutzermodell verfügen Sie möglicherweise über Ereignis-Listener für Aktualisierungen und aktualisierte Ereignisse, die ausgelöst werden, wenn ein Benutzer aktualisiert wird.
Beispiel-Benutzermodell mit Ereignissen:
namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $fillable = ['name', 'email', 'status']; protected static function booted() { // Event listener for updating static::updating(function ($user) { // Log or handle the update event \Log::info("User is being updated: {$user->id}"); }); // Event listener for updated static::updated(function ($user) { // Example action, such as sending a notification $user->notify(new \App\Notifications\UserUpdatedNotification()); }); } }
Hier jedes Mal, wenn ein Benutzer aktualisiert wird:
Wenn Sie einen Benutzer mit save() aktualisieren, werden diese Ereignisse ausgelöst.
Beispiel:
$user = User::find(1); $user->status = 'active'; $user->save();
Erwartetes Ergebnis: Die Aktualisierungs- und Aktualisierungsereignisse werden ausgelöst, was bedeutet, dass der Protokolleintrag erstellt und der Benutzer benachrichtigt wird.
Um das Auslösen dieser Ereignisse zu vermeiden (z. B. wenn ein Administrator den Benutzerstatus im Rahmen eines Massenvorgangs aktualisiert), können Sie saveQuietly() verwenden.
Beispiel:
$user = User::find(1); $user->status = 'inactive'; $user->saveQuietly();
Mit saveQuietly() werden weder die Aktualisierungs- noch die Aktualisierungsereignisse ausgelöst, was bedeutet:
namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { protected $fillable = ['name', 'email', 'status']; protected static function booted() { // Event listener for updating static::updating(function ($user) { // Log or handle the update event \Log::info("User is being updated: {$user->id}"); }); // Event listener for updated static::updated(function ($user) { // Example action, such as sending a notification $user->notify(new \App\Notifications\UserUpdatedNotification()); }); } }
$user = User::find(1); $user->status = 'active'; $user->save();
$user = User::find(1); $user->status = 'inactive'; $user->saveQuietly();
saveQuietly() ist in folgenden Szenarios von Vorteil:
So können Sie dies in einen Laravel-Controller integrieren, um Administratoraktualisierungen durchzuführen:
$user = User::find(1);
Mit saveQuietly() können Aufgaben, bei denen eine Ereignisbehandlung unnötig ist, erheblich rationalisiert werden, sodass Sie eine bessere Kontrolle über das Verhalten des Eloquent-Modells in Laravel haben.
Das obige ist der detaillierte Inhalt vonWie und wann man saveQuietly() für stille Updates in Laravel verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!