我的模型中有很多关系,我注意到如果我尝试删除一个模型(我已经设置了各种UI屏幕来执行此操作),它会失败,因为另一个表引用了该记录。
我是否有可能事先知道使用Symfony功能是否存在任何潜在的外键违规?然后我可以中断删除过程并显示一个很好的错误或消息或其他东西。
或者,如果有人能想出任何其他方法来做到这一点,我肯定会接受这些想法。
答案 0 :(得分:1)
在我们软件工程部的项目中,我们检查了FK违规行为。在控制器中,我们设置了一个私有函数,用于检查给定实体是否存在FK违规,如果此函数成功,我们可以尝试删除该实体。
函数本身没有做太多,只是通过实体关系,并检查是否存在任何引用的实体。如果是,则应在删除前将其删除。
如果你想删除引用的entites,你也可以设置关系的级联:
@ORM\ManyToOne(targetEntity="Entity", cascade={"remove"})