laravelのObserver(オブザーバー)
参考:Laravel Observerを使ってみた
Laravel Observer(オブザーバー)
モデル観察システムで、モデルの状態変化(作成、更新、削除など)を監視し、それに対して特定のアクションを実行する機能を作成できる。
①コマンドでファイル作成
php artisan make:observer UserObserver[←ファイル名] --model=User[←モデル名]
②該当メソッドにコードを書く
public function created(Account $account): void // モデルファイルが作成された時
public function updated(Account $account): void // モデルファイルが更新された時
public function deleted(Account $account): void // モデルファイルが削除された時
public function restored(Account $account): void // Soft Delete(論理削除)されたモデルが復元されたとき
public function forceDeleted(Account $account): void // Soft Delete(論理削除)されたモデルが完全に永久的に削除されたとき
(例)Accountモデルファイルができたら、MHIAテーブルのデータをHIAテーブルにコピー
public function created(Account $account): void
{
$latestAccount = Account::latest()->first();
// 重複コピーを避けるため、HIAテーブルに自分のaccount_idがあるか確認
// $existingData = HealthInsuranceAssociation::where('account_id', auth()->user()->account_id)->get();
$existingData = HealthInsuranceAssociation::where('account_id', $latestAccount->id)->get();
// account_idがなかったらマスターデータを取得してHIAテーブルに登録
if($existingData->isEmpty()){
// $hia_tables->account_id = auth()->user()->account_id;
}
}
}
③app/Providers/EventServiceProviderのbootに登録
/**
* Register any events for your application.
*/
public function boot(): void
{
Account::observe(AccountObserver::class);
}