【问题标题】:Laravel observer - deleted and forceDeleted both firedLaravel 观察者 - 删除和 forceDeleted 都被解雇了
【发布时间】:2021-09-01 09:06:08
【问题描述】:

我在我的模型中使用 SoftDeletes trait,以及一个适用于每个事件的 Observer。

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

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

是否有“安静”删除的方法或类似的东西?

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

【问题讨论】:

标签: laravel


【解决方案1】:

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

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

或者如你所说,反过来

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

【讨论】:

  • 是的,我想这是正确的方法...在已删除的方法中 if (!$model->isForceDeleting()) 执行操作
【解决方案2】:

我认为您应该在观察者中评论已删除的功能。我认为这会奏效试试这个。只保留一个被强制删除的函数

【讨论】:

  • 如果我删除或强制删除,我会触发不同的事件,我需要两者...我想我必须在删除的方法中测试 isFoceDeleting()
  • 那么你应该在点击每个功能之前检查一下,然后我认为它也会起作用
猜你喜欢
  • 2021-02-13
  • 2012-07-15
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多