私の問題を例を挙げて説明しています。
私のモデルクラスはUser
で、オブザーバークラスはUserObserver
です。
モデル関数が使用されるたびに実行されるコードをupdated
メソッドに追加しました。たとえば、 (下記)のメソッドは、レコードで更新が発生するたびに呼び出される必要があります。UserObserver
User
update
updated
UserObserver
User
class UserObserver{
function updated($userModel)
{
//Send mail code
}
}
以下に示すようにデータが更新されると、コードはUserObserver
機能します。User
User::find(2)->update(['name'=>'Update Name']);
ただし、データが次のように更新されると、 のコードはUserObserver
実行されません。User
User::where('id', 2)->update(['name'=>'Update Name']);
デバッグすると、モデルオブジェクトが返され、User::find(2)
オブジェクトが返されることがわかります。では、モデル オブジェクトまたはオブジェクトのどちらを使用して更新されたかに関係なく、オブザーバー クラス メソッドをどのように利用できますか?User
User::where('id', 2)
Builder
User
Builder
問題は、既存のアプリケーションがあり、一部のモデルが のように更新されていることですUser::where('id', 2)->update(['name'=>'Update Name']);
。update ステートメントを に変更するのは難しい作業User::find(2)->update(['name'=>'Update Name']);
です。