首页 > 解决方案 > Laravel 观察者 - 删除和 forceDeleted 都被解雇了

问题描述

我在我的模型中使用 SoftDeletes 特征,以及一个对每个事件都非常有用的观察者。

但是当我 forceDelete 一个模型时,deleted 和 forceDeleted 方法都会被触发,所以我的通知会被触发两次。

我发现的唯一线程没有答案: https ://github.com/laravel/framework/discussions/36191

无论如何“安静”删除的方法或类似的东西?

任何帮助表示赞赏!朱利安

标签: laravel

解决方案


由于您同时使用这两个事件,因此唯一的方法是检查您的deleted事件是否来自强制删除,然后停止进一步执行。

if ($model->isForceDeleting()) {
    return null; // Stop the rest of the event
}

或者正如你提到的,反过来

if (! $model->isForceDeleting()) {
    // Deleted event code here
}

推荐阅读