防止删除实体

时间:2013-04-11 21:26:09

标签: symfony entity

我有一个与许多其他实体(例如产品或类别)相关的实体(例如Image)。我想知道,如果某个关系存在于其他地方,哪种方法可以防止删除实体(例如,如果与产品相关,我不应该删除图像)。我的想法是在存储库类中搜索关系并返回结果,或者在实体的preRemove生命周期事件中执行“某事”。哪种Symfony2方法可以防止删除相关实体?

2 个答案:

答案 0 :(得分:1)

只要未设置级联删除,任何方向性实体都将阻止删除相关实体。如果您的关联不是双向的,那么您也必须在背面查询。

为了扩展CJ的答案,你可以删除删除链接,但你也必须检查控制器中的实体,因为任何网址黑客都可以删除一个对象,如果它的id已知。

答案 1 :(得分:0)

我建议您在实体之间存在关系时最好禁用表单删除链接。通过这种方式,您甚至可以让客户了解存在相关实体,并且在删除关系之前不应将其删除。

您可以随时在删除实体之前检查实体,并在实际上在实体上调用symfony中的某个进程时实际处理该特定实体的整个对象,从而可以访问该实体的所有值。因此,您可以在该特定点进行检查并进行条件语句。

我的个人认为,你不应该尝试导入多余的库函数来处理你可以在没有它们的情况下实现的小问题。这将使您的代码更容易理解,甚至更轻,因为包含额外库的前景很可能比您需要的更多