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