拉拉维尔强制删除关系事件


Laravel force delete event on relations

我正在使用Laravel 5.2开发一个Laravel网络应用程序。我的问题很简单...如何侦听强制删除事件以强制删除模型关系?

我一直在网络和 S.O. 寻找一些,但我找到的所有问题/答案都回到了删除方法,而且在 API 文档中我还没有找到太多......

就我而言,我有一个注册表模型和一个注册表详细信息模型

注册表表

|id|name|surname|....

注册表详细信息表

|id|id_registry|....

我已经为这个boot函数创建了:

protected static function boot()
{
    parent::boot();
    static::deleted(function($registry) {
        // Delete registry_detail
        $registry->registryDetail->delete();
    });
    static::restored(function($registry) {
        // Restore registry_detail
        $registry->registrydetail()->withTrashed()->restore();
    });
}

由于两个模型都SoftDeletes因此仅在调用 delete() 方法时才调用 static::deleted 函数。 如果我调用 forceDelete() 方法,则相关模型不会从数据库中删除。

如果您需要更多信息,请告诉我。

提前致谢

调用 forceDelete() 时,deleted 事件仍应触发。在 deleted() 事件方法中,可以通过isForceDeleting()检查受保护forceDeleting属性,以查看您是处于常规删除还是强制删除状态。

static::deleted(function($registry) {
    // Delete registry_detail
    if ($registry->isForceDeleting()) {
        $registry->registryDetail->forceDelete();
    } else {
        $registry->registryDetail->delete();
    }
});