9

我想知道如何防止模型观察者采取行动,例如:

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

在观察者

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

先感谢您。

4

1 回答 1

14

您可以简单地返回 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()

希望这可以帮助。

于 2018-04-25T07:35:56.410 回答