我用一个例子来解释我的问题。
我的模型类是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)返回User模型对象User::where('id', 2)并将返回一个Builder对象。那么,无论是使用User模型对象还是Builder对象更新,我如何才能使用我们的观察者类方法呢?
问题是,我确实有一个现有的应用程序,其中一些模型正在更新,例如User::where('id', 2)->update(['name'=>'Update Name']);. 将 update 语句修改为User::find(2)->update(['name'=>'Update Name']);.