Laravel では、saveQuietly() は Eloquent モデルで使用できるメソッドであり、作成、作成、更新、更新などのイベントを発生させずにモデルを保存できます。モデルイベント。これは、ログ、通知、データ検証などのイベントに関連付けられた追加のアクションをトリガーせずにデータを更新または保存したい場合に役立ちます。
ここでは、Laravel の saveQuietly() の実践的な例を示したステップバイステップのガイドと、各部分の詳細な説明を示します。
User モデルがあり、ユーザーが更新されるたびに、ユーザーに通知を送信するイベントがトリガーされると想像してください。ただし、特定の場合 (管理者の更新やバックグラウンドのメンテナンス タスクなど) では、この通知をトリガーせずにユーザー情報をサイレントに更新することが必要な場合があります。
User モデルには、ユーザーが更新されたときに起動される、更新および更新されたイベント用のイベント リスナーがある場合があります。
イベントを含むユーザー モデルの例:
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()); }); } }
ここでは、ユーザーが更新されるたびに次のようになります:
save() を使用してユーザーを更新すると、これらのイベントが発生します。
例:
$user = User::find(1); $user->status = 'active'; $user->save();
期待される結果: 更新および更新されたイベントがトリガーされます。つまり、ログ エントリが作成され、ユーザーに通知されます。
これらのイベントのトリガーを回避するには (管理者が一括操作の一部としてユーザー ステータスを更新する場合など)、saveQuietly() を使用できます。
例:
$user = User::find(1); $user->status = 'inactive'; $user->saveQuietly();
saveQuietly() を使用すると、更新イベントも更新イベントも発生しません。これは次のことを意味します:
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() は、次のようなシナリオで役立ちます。
管理者の更新を処理するためにこれを Laravel コントローラーに組み込む方法は次のとおりです。
$user = User::find(1);
saveQuietly() を使用すると、イベント処理が不要なタスクを大幅に合理化し、Laravel で Eloquent モデルの動作をより詳細に制御できるようになります。
以上がLaravel でサイレント更新に saveQuietly() を使用する方法とタイミングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。