【问题标题】:Preventing removal of entity防止删除实体
【发布时间】:2013-04-11 21:26:09
【问题描述】:

我有一个与许多其他实体(例如产品或类别)相关的实体(例如图像)。我想知道如果在其他地方存在关系(例如,如果图像与产品相关,我应该无法删除它),这是防止删除实体的最佳方法。我的想法是在存储库类中搜索关系并返回结果,或者在实体的 preRemove 生命周期事件中做“某事”。防止删除相关实体的最佳 Symfony2 方法是什么?

【问题讨论】:

  • 我认为最好的方法是搜索相关实体(如果有),然后实现自己的逻辑。

标签: symfony entity


【解决方案1】:

只要不设置级联删除,任何定向实体都会阻止删除相关实体。如果您的关联不是双向的,您也必须从背面查询。

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

【讨论】:

    【解决方案2】:

    我的建议是,当实体之间存在关系时,您最好禁用表单删除链接。这样,您甚至可以让客户了解存在相关实体,并且他不应该在删除关系之前将其删除。

    你总是可以在删除实体之前检查它,当你在一个实体上实际调用 symfony 中的某个进程时,你实际上是在该特定实体的整个对象上工作,它可以访问该实体的所有值。所以你可以在那个特定的点检查它并做出条件陈述。

    我个人认为,您不应该尝试为没有它们可以实现的小事情导入多余的库函数。这将使您的代码更容易理解,甚至更轻松,因为包括额外的库很可能比您需要的更多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 2020-07-21
      • 1970-01-01
      • 2013-01-07
      • 2016-12-12
      • 2017-05-29
      • 1970-01-01
      相关资源
      最近更新 更多