我正在使用Laravel 5.2开发一个Laravel Web应用程序。我的问题很简单......我如何听取forceDelete事件以强制删除模型关系?
我一直在寻找网络和S.O.对于一些但我发现的所有问题/答案都归结为删除方法,而且在API文档中我还没有找到...
在我的情况下,我有一个注册表模型和一个RegistryDetail模型
注册表
|id|name|surname|....
RegistryDetail表
|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()方法,则不会从数据库中删除相关模型。
如果您需要更多信息,请告诉我。
提前致谢
答案 0 :(得分:8)
调用deleted
时,forceDelete()
事件仍应触发。在deleted()
事件方法中,您可以通过forceDeleting
检查isForceDeleting()
受保护的属性,看看您是在进行常规删除还是强制删除。
static::deleted(function($registry) {
// Delete registry_detail
if ($registry->isForceDeleting()) {
$registry->registryDetail->forceDelete();
} else {
$registry->registryDetail->delete();
}
});