我正在用示例解釋我的問題。使用查詢生成器進行更新時,Laravel的Model觀察器類不起作用
我的模特班是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']);
然而,當User
數據以下列方式更新了UserObserver
的代碼將不會運行:
User::where('id', 2)->update(['name'=>'Update Name']);
當我調試我能理解User::find(2)
回報User
米odel對象和User::where('id', 2)
將返回一個Builder
對象。那麼,無論使用User
模型對象還是Builder
對象,如何使用我們的觀察者類方法?
問題是,我確實有一個現有的應用程序,其中一些型號正在更新,如User::where('id', 2)->update(['name'=>'Update Name']);
。將更新語句修改爲User::find(2)->update(['name'=>'Update Name']);
是一項艱鉅的任務。
放在儲蓄()方法,這可能是值得添加代碼爲UserObserver更新在你的問題和鏈接兩個類的代碼中。 – haakym