我正在使用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();
}
});