Laravel强制删除关系事件

IlG*_*ala 2 php soft-delete laravel laravel-5.2

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

我一直在寻找网络和SO以及一些我发现的所有问题/答案都归结为删除方法,而且在API文档中我还没有找到很多...

在我的例子中,我有一个注册表模型和一个RegistryDetail模型

注册表

|id|name|surname|....
Run Code Online (Sandbox Code Playgroud)

RegistryDetail表

|id|id_registry|....
Run Code Online (Sandbox Code Playgroud)

我已经为这个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();
    });
}
Run Code Online (Sandbox Code Playgroud)

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

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

提前致谢

pat*_*cus 8

deleted在打电话时,该事件仍应触发forceDelete().在deleted()事件方法中,您可以检查forceDeleting受保护的属性,isForceDeleting()以查看您是在常规删除还是强制删除.

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