Asu*_*sur 5 php observers laravel php-7.2 laravel-5.6
我想知道如何在模型观察者身上防止某个动作,例如:
$model->update(['foo' => 'bar']);
Run Code Online (Sandbox Code Playgroud)
在观察者中
public function updating(Model $model)
{
if($model->isDirty('foo') {
// Prevent action from happening
}
}
Run Code Online (Sandbox Code Playgroud)
先感谢您.
你可以简单地返回false.
如文档中所述.http://laravel.com/docs/5.6/events#defining-listeners.
有时,您可能希望停止将事件传播给其他侦听器.您可以通过从侦听器的handle方法返回false来执行此操作.
此操作不会更新记录/模型.
public function updating(Model $model)
{
if($model->isDirty('foo') {
// Prevent action from happening.
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
尽管模型实例值已更新,但这些值未在数据库中更新,因此在将实例返回到视图或API时要小心.为了解决这个问题,你可以使用getOriginal()
希望这可以帮助.