前提・実現したいこと
DBと同じデータを登録した際にObservableのイベントをフックさせる方法がないか探しています。
今だとDBと同じデータを登録の際はイベントがフックされないようになっているようです。
DB (User)
id | name | age |
---|---|---|
1 | ABC | 10 |
2 | EFG | 20 |
該当ソースコード
public function update(Request $request, $user_id) { DB::beginTransaction(); try { $User = User::where('id', 1)->first(); $User->name = "ABC"; $User->age = 10; $User->save(); DB::commit(); } catch (\PDOException $e) { DB::rollBack(); dd("NG"); } dd("OK"); }
Traits
<?php namespace App\Traits; use App\Observers\AuthorObserver; use Illuminate\Database\Eloquent\Model; trait AuthorObservable { public static function bootAuthorObservable() { self::observe(AuthorObserver::class); } }
Observers
<?php namespace App\Observers; use Illuminate\Database\Eloquent\Model; class AuthorObserver { public function updated(Model $model) { dd("updated"); } }
「DBと同じデータを登録した際」とは?どういうことですか?具体的に説明をお願いします。
DB の ID:1の箇所と同じデータを更新した際です。
id name age
1 ABC 10
$User->name = "ABC";
$User->age = 10;
id: 1の値と同じ値を持つ別のレコードを登録しようとしたとき、の意味ですか?
それとも、id:1 のレコードを更新しようとしたとき、の意味ですか?
それとも、id:1 のレコードを更新しようとしたとき、の意味ですか?
こちらになります。
該当ソースが書いてあります。
$User = User::where('id', 1)->first();
$User->name = "ABC";
$User->age = 10;
$User->save();