LoginSignup
2
4

More than 5 years have passed since last update.

LaravelのEloquentでオブザーバーを一時的に無効にしたい場合

Posted at

Laravelのテストでobserverのテストを書いたとき、
observer設定前と設定後の値を比較するためにobserverを一時的に無効にする必要があったのですが、公式マニュアルを読んでもobserverの登録のやり方(Model::observe(ModelObserver::class))はありますが無効にするやり方が記載されていなかったので調べました。

環境

名前 バージョン
PHP 7.2.6
Laravel 5.5.40

やり方

// オブザーバーを無効にする
Model::flushEventListeners();

これだけです。
なお、無効にしたあとに有効にするには

Model::observe(ModelObserver::class)

です。

observer関連のメソッドは、Illuminate\Database\Eloquent\Concerns\HasEventsに定義されているので、observer関連で困ったらここを参照すると良さそうです。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4