阻止 Laravel 观察者事件的动作

Prevent action from Laravel observer events

我想知道如何阻止模型观察者的动作,例如:

$model->update(['foo' => 'bar']);

在观察者中

public function updating(Model $model)
{
    if($model->isDirty('foo') {
        // Prevent action from happening
    }
}

提前致谢。

你可以简单地 return false。

如文档中所述。 http://laravel.com/docs/5.6/events#defining-listeners.

Sometimes, you may wish to stop the propagation of an event to other listeners. You may do so by returning false from your listener's handle method.

此操作不会更新 record/model。

public function updating(Model $model)
{
    if ($model->isDirty('foo')) {
       // Prevent action from happening
       return false;
    }
}

虽然模型实例值得到更新,但这些值不会在数据库中更新,因此在 return 将实例发送到视图或 API 时要小心。为了解决这个问题,您可以使用 getOriginal()

希望这对您有所帮助。