Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony:使用SoftDeleteable行为扩展时如何级联取消删除?_Symfony_Restore_Cascading Deletes - Fatal编程技术网

Symfony:使用SoftDeleteable行为扩展时如何级联取消删除?

Symfony:使用SoftDeleteable行为扩展时如何级联取消删除?,symfony,restore,cascading-deletes,Symfony,Restore,Cascading Deletes,我的实体User通过OneToOne关系与其他实体相关,我正在为所有实体级联“delete” 我使用的是软删除行为扩展,因此当我删除用户时,实体实际上并没有从数据库中删除:deletedata字段只是设置为DateTime(现在),相关实体的所有deletedata字段也是如此 现在,当我想恢复用户时,我会按照文档中的建议执行: $em->getFilters()->disable('soft-deleteable'); $user->setDeletedAt(null);

我的实体
User
通过OneToOne关系与其他实体相关,我正在为所有实体级联“delete”

我使用的是软删除行为扩展,因此当我删除
用户
时,实体实际上并没有从数据库中删除:
deletedata
字段只是设置为DateTime(现在),相关实体的所有
deletedata
字段也是如此

现在,当我想恢复用户时,我会按照文档中的建议执行:

$em->getFilters()->disable('soft-deleteable');
$user->setDeletedAt(null);

我的问题是,当我这样做时,所有相关实体都会被删除。知道如何将setDeleted(null)自动级联到所有这些文件中吗?

从未使用过此扩展,但通过查看GH存储库中的开放问题,我可以看到其中许多文件在处理关联时与类似问题相关:

我将首先尝试显式禁用每个相关实体的筛选器:

$filter = $em->getFilters()->enable('soft-deleteable');
$filter->disableForEntity('Entity\Article');
$filter->disableForEntity('Entity\SomeOtherEntity');

否则,我会添加一个侦听器(并将其绑定到其中一个Doctrine事件)以在
软可删除

之外级联还原,只是为了确保:将deletedAt设置为null后是否刷新?谢谢您的回答。我会按照你的建议尝试添加一个倾听者,即使看起来不是很容易。比你想象的容易!是的,绑定一个事件很容易,但我不知道如何获取所有“级联”实体。类似于$object->getCascadedRelations()。信息当然可以在映射中找到,但我不知道如何提取它。