Laravel:提供者没有变化时的模型事件

mwa*_*afi 5 provider laravel eloquent

当更新用户模型 ( user::update()) 时,它会触发“模型事件”:

  1. User::updating
  2. User::updated

仅当有一些值发生变化时,如果没有变化,是否有办法触发另一个“事件”?谢谢

//Provider

public function boot()
{
    User::updated(function ($user) {
        //do something
    });
}
Run Code Online (Sandbox Code Playgroud)

nak*_*kov 1

您可以使用该方法检查模型是否已更改isDirty(),并手动触发事件..例如:

User::updating(function ($user) {
    if ( ! $user->isDirty())
    {
        event(...);
    }    
});
Run Code Online (Sandbox Code Playgroud)

的例子isDirty()

$user = App\User::first();
$user->isDirty();          //false
$user->name = "Test";
$user->isDirty();          //true
Run Code Online (Sandbox Code Playgroud)

但在updated我猜你应该updating在这里使用该事件之前执行此操作。