3

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

如果用户决定删除产品,但产品与销售挂钩,如何保持销售对象一致?

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

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

     SELECT * FROM product WHERE hidden = FALSE

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

4

1 回答 1

0

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

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

orphanRemoval:布尔值,指定是否应由 Doctrine 删除孤儿,即未连接到任何拥有实例的反向 OneToOne 实体。默认为假。

请参阅此处了解更多信息。

于 2012-12-30T23:45:45.337 回答