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()。信息当然可以在映射中找到,但我不知道如何提取它。