我有一个与许多其他实体(例如产品或类别)相关的实体(例如图像)。我想知道如果关系存在于其他地方(例如,如果图像与产品相关,我不应该能够删除图像),这是防止删除实体的最佳方法。我的想法是在存储库类中搜索关系并返回结果,或者在实体的 preRemove 生命周期事件中做“某事”。防止删除相关实体的最佳 Symfony2 方法是什么?
问问题
644 次
2 回答
1
只要不设置级联删除,任何定向实体都会阻止删除相关实体。如果您的关联不是双向的,您还必须从背面查询。
要扩展 CJ 的答案,您可以删除删除链接,但您还必须检查控制器中的实体,因为任何 url 黑客都可以删除一个对象,如果它的 id 是已知的。
于 2013-04-12T17:57:52.400 回答
0
我的建议是,当实体之间存在关系时,您最好禁用表单删除链接。通过这种方式,您甚至可以让客户了解存在相关实体,并且他不应该在删除关系之前将其删除。
在删除实体之前,您始终可以检查实体,并且当您在实体上实际调用 symfony 中的某个进程时,您实际上是在该特定实体的整个对象上工作,从而可以访问该实体的所有值。因此,您可以在该特定点检查它并做出条件陈述。
我个人认为,您不应该尝试为没有它们就可以实现的小事情导入多余的库函数。这将使您的代码更容易理解,甚至更轻松,因为包括额外的库很可能比您需要的更多
于 2013-04-12T04:29:36.133 回答