我用一个例子来解释我的问题。
我的模型类是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']);
.