Symfony2 Doctrine - 删除或隐藏关系以保持一致性?

时间:2012-12-30 08:06:09

标签: php symfony doctrine-orm

我有一个包含许多关系的Symfony2项目,我希望数据集在任何时候都是一致的。 例如,销售与产品相关联。

如果用户决定删除产品,但产品已与销售相关联,那么如何保持销售对象的一致性?

使用纯SQL,我会添加一个带有RESTRICT关系的“隐藏”列。 如果没有与产品关联的销售,则会删除产品。 如果有一个或多个销售,则不会删除产品,但隐藏字段设置为true。

在用户界面中,SQL请求将是

     SELECT * FROM product WHERE hidden = FALSE

这是处理这个问题的正确方法吗? 你有没有想过如何在Symfony 2中有类似的行为?

1 个答案:

答案 0 :(得分:0)

您可以使用Doctrine's annotations来帮助您始终保持数据的一致性。例如,当销售被删除时,它也会继续删除产品。

如果您使用一对一或一对多关系,则可以将 orphanRemoval 注释为true:

  

orphanRemoval:Boolean,指定是否孤立,反OneToOne   未连接到任何拥有实例的实体应该是   由Doctrine删除。默认为false。

有关详细信息,请参阅here