Laravel 强制删除关系事件
Laravel force delete event on relations
我正在使用 Laravel 5.2 开发 Laravel 网络应用程序。我的问题很简单......我如何收听 forceDelete 事件以强制删除模型关系?
我一直在网上浏览 S.O。对于少数但所有 questions/answers 我发现与 delete 方法有关的地方,而且在 API 文档中我还没有找到太多...
在我的例子中,我有一个 Registry 模型和一个 RegistryDetail 模型
注册表table
|id|name|surname|....
注册表详细信息table
|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
protected 属性 以查看您是处于常规删除还是强制删除。
static::deleted(function($registry) {
// Delete registry_detail
if ($registry->isForceDeleting()) {
$registry->registryDetail->forceDelete();
} else {
$registry->registryDetail->delete();
}
});
我正在使用 Laravel 5.2 开发 Laravel 网络应用程序。我的问题很简单......我如何收听 forceDelete 事件以强制删除模型关系?
我一直在网上浏览 S.O。对于少数但所有 questions/answers 我发现与 delete 方法有关的地方,而且在 API 文档中我还没有找到太多...
在我的例子中,我有一个 Registry 模型和一个 RegistryDetail 模型
注册表table
|id|name|surname|....
注册表详细信息table
|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
protected 属性 以查看您是处于常规删除还是强制删除。
static::deleted(function($registry) {
// Delete registry_detail
if ($registry->isForceDeleting()) {
$registry->registryDetail->forceDelete();
} else {
$registry->registryDetail->delete();
}
});