当更新用户模型(user::update())时,它触发“模型事件”:
user::update()
User::updating
User::updated
//Provider public function boot() { User::updated(function ($user) { //do something }); }
q3qa4bjr1#
您可以使用isDirty()方法检查模型是否已更改,并手动触发事件。例如:
isDirty()
User::updating(function ($user) { if ( ! $user->isDirty()) { event(...); } });
isDirty()的示例
$user = App\User::first(); $user->isDirty(); //false $user->name = "Test"; $user->isDirty(); //true
但是在updated之前执行此操作,我猜您应该在此处使用updating事件。
updated
updating
ajsxfq5m2#
在这种情况下,使用saving和saved事件。每次调用save方法时都会触发这两个事件,而不管模型上是否发生了更改。对于updating和updated事件,需要更改模型属性,否则Laravel跳过此事件。这里有一个例子来形象化它,并显示事件的顺序:
saving
saved
save
$user = User::create(); $user->save(); $user->name = 'test'; $user->save(); $user->save();
以下是事件的顺序:
saving creating created saved saving saved saving updating updated saved saving saved
2条答案
按热度按时间q3qa4bjr1#
您可以使用
isDirty()
方法检查模型是否已更改,并手动触发事件。例如:isDirty()
的示例但是在
updated
之前执行此操作,我猜您应该在此处使用updating
事件。ajsxfq5m2#
在这种情况下,使用
saving
和saved
事件。每次调用
save
方法时都会触发这两个事件,而不管模型上是否发生了更改。对于
updating
和updated
事件,需要更改模型属性,否则Laravel跳过此事件。这里有一个例子来形象化它,并显示事件的顺序:
以下是事件的顺序: