我正在使用带有教义2的symfony2。
我开发了一项功能,用户可以从外部源将数据导入数据库。我现在必须实现“恢复”功能。基本上,用户应该只需单击即可撤消整个导入操作。
对于数据的子集,行为与mysql rollback或mysqldump + reimport相同,但我需要在Doctrine 2的应用程序级别工作。
序列化和反序列化代理或使用工作单元都无法解决问题。 我现在正在实现一个实用程序类来保存/恢复数组中的实体(和指定的关系),但管理所有关系需要做很多工作。
有没有更简单的解决方案?
答案 0 :(得分:0)
我不认为以下是一个优雅的解决方案,因为它非常具有侵入性,但它可能会有所帮助,而且非常有效:
对于每个实体,请指定导入字段,该字段引用导入实体。恢复时只删除映射到给定导入的所有实体。如果修改实体以添加 import 字段过于干扰或者不是选项,则可以考虑将导入映射到特定实体的OneToOne关系。这也减少了耦合。
如果导入也包含更新,事情显然会变得更加复杂;导入后数据发生的修改也是如此。恢复将失败或级联到新实体。