【问题标题】:Symfony2: Doctrine extension Softdeleteable is permanently deleting Translatable elementsSymfony2:Doctrine 扩展 Softdeleteable 正在永久删除可翻译的元素
【发布时间】:2015-06-06 21:31:03
【问题描述】:
我正在使用最新版本的 dev-master 带有 Symfony2.7.0 的 Doctrine 扩展。
我向我的实体添加了两个扩展 Softdeleteable 和 Translatable。问题是当实体被软删除时,它的翻译被硬删除。
有解决办法吗?
编辑
我在 Github 上找到了这个 issue,但我无法给出太多答案。
【问题讨论】:
标签:
php
symfony
doctrine-orm
doctrine
soft-delete
【解决方案1】:
在查看了 github 问题和建议的“修复”以及咨询专家后,我认为这比它的价值更麻烦。
问题显然是监听器,我不应该弄乱vendor 下的捆绑包。
当可翻译从我的软删除对象中获得“删除”时,我的对象的这些“子项”并不是它们自己的真正对象,因此无法配置为软删除。
我的解决方案是添加一个deletedAt 属性,默认情况下为NULL,当我在控制器中执行$entityManager->delete($object) 现在时,只需将deletedAt 的值更改为当前日期时间。 $object->setDeletedAt($date)。
在检索对象时,我只需添加一个子句SELECT * FROM table_name WHERE deletedAt IS NULL;
这意味着要更改很多查询,但这是等待修复时最简单的选择。