使用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实体时得到它。这就是为什么我想事先检查一下