阻止Laravel观察员事件的行动

时间:2018-04-25 07:32:06

标签: php laravel observers laravel-5.6 php-7.2

我想知道如何在模型观察者上阻止某个动作,例如:

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

在观察者中

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

提前谢谢。

1 个答案:

答案 0 :(得分:8)

你可以简单地返回false。

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

  

有时,您可能希望停止将事件传播给其他侦听器。您可以通过从侦听器的句柄方法返回false来执行此操作。

此操作不会更新记录/模型。

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

    }
}

尽管模型实例值已更新,但这些值未在数据库中更新,因此在将实例返回到视图或API时要小心。要解决此问题,您可以使用getOriginal()

希望这有帮助。