使用Symfony/条令,检查一个实体是否被另一个实体引用
删除实体时,我经常在允许删除实体之前手动检查该实体是否未链接到其他实体:使用Symfony/条令,检查一个实体是否被另一个实体引用,symfony,doctrine-orm,doctrine,Symfony,Doctrine Orm,Doctrine,删除实体时,我经常在允许删除实体之前手动检查该实体是否未链接到其他实体: public function deleteAction(Operation $operation) { if ($operation->getArticles()->isEmpty() && $operation->getMessages()->isEmpty()) { $em = $this->getDoctrine()->getManager
public function deleteAction(Operation $operation)
{
if ($operation->getArticles()->isEmpty() && $operation->getMessages()->isEmpty()) {
$em = $this->getDoctrine()->getManager();
$em->remove($operation);
$em->flush();
$this->addFlash('success', sprintf("Operation deleted", $operation));
} else {
$this->addFlash('danger', sprintf("Can't delete operation.", $operation));
}
return $this->redirectToRoute('operation');
}
但是这个方法意味着知道实体和其他实体之间的所有关系,我必须检查每个实体。
使用try…catch
有时很有用,但删除并不总是引发异常。在删除实体之前,是否有其他(更通用的)方法来检查是否存在对它的引用?我对您试图做的事情有些困惑。您不能使用DB级别的约束甚至ORM级别吗?我有一个亲戚。你可以看看它是如何解决的。最后,它可能会为您提供一些提示。@Alex.Barylski如果我的Foo实体引用了我想用非双向多个实体删除的实体,我可以删除一条记录,而不会违反
完整性约束
,但我稍后会在访问我的Foo实体时得到它。这就是为什么我想在开始之前检查一下我有点搞不懂你想做什么。您不能使用DB级别的约束甚至ORM级别吗?我有一个亲戚。你可以看看它是如何解决的。最后,它可能会为您提供一些提示。@Alex.Barylski如果我的Foo实体引用了我想用非双向多个实体删除的实体,我可以删除一条记录,而不会违反完整性约束
,但我稍后会在访问我的Foo实体时得到它。这就是为什么我想事先检查一下