我有一个包含许多关系的Symfony2项目,我希望数据集在任何时候都是一致的。 例如,销售与产品相关联。
如果用户决定删除产品,但产品已与销售相关联,那么如何保持销售对象的一致性?
使用纯SQL,我会添加一个带有RESTRICT关系的“隐藏”列。 如果没有与产品关联的销售,则会删除产品。 如果有一个或多个销售,则不会删除产品,但隐藏字段设置为true。
在用户界面中,SQL请求将是
SELECT * FROM product WHERE hidden = FALSE
这是处理这个问题的正确方法吗? 你有没有想过如何在Symfony 2中有类似的行为?
答案 0 :(得分:0)
您可以使用Doctrine's annotations来帮助您始终保持数据的一致性。例如,当销售被删除时,它也会继续删除产品。
如果您使用一对一或一对多关系,则可以将 orphanRemoval 注释为true:
orphanRemoval:Boolean,指定是否孤立,反OneToOne 未连接到任何拥有实例的实体应该是 由Doctrine删除。默认为false。
有关详细信息,请参阅here。