是否存在强制删除事件?-Laravel 5.2



当我将记录放入"垃圾桶"时,我使用启用softDelete的普通删除方法。

当我强制删除一个记录时,我也想删除所属的图像。所以我想利用拉拉威尔的事件。在强制删除时,我希望执行一些代码。

我可以参加什么活动?当呼叫forceDeleting时,我得到:

Call to undefined method IlluminateDatabaseQueryBuilder::forceDeleting()

我应该使用什么活动?

编辑现在我使用的是:

Document::deleting(function ($document) {
        if(!$document->deleted_at) {
            // normal delete
        }else{
            // force delete
        }
});

另请参阅:https://codeneverlied.com/force-deleting-event-in-laravel/

但我仍然想知道是否有这样的活动。

您可以创建自己的事件并自行启动。扩展现有的Delete Event并将其称为Force Deleting是最简单的。

下一步是扩展softDelete特性,自动为您触发此事件。

根据Eloquent文档,以下是事件:

检索、创建、创建、更新、更新、保存、保存、删除、删除、恢复和恢复

因此,要回答你的问题,如果它存在,答案是否定的。根据Laravel 5.8 的文件,不是这样

https://laravel.com/docs/5.8/eloquent

希望我能帮忙。

ImJT

更好的方法是:

// GOOD approach
 static::deleted(function ($document) {
      if (Document::withTrashed()->where('id', $model->id)->exists()) {
           // document is soft deleted
      } else {
           // document is force deleted
      }
});

最新更新