Symfony:在Doctrine关系上处理EntityNotFoundException

时间:2018-03-21 19:08:17

标签: symfony doctrine twig symfony4

当我尝试在Twig中显示相关对象,并且由于ID在父实体中而不存在该关系,但相关实体不在当前数据库中时,Symfony会抛出500错误

  

// EntityNotFoundException Twig_Error_Runtime   在呈现模板期间抛出了异常   ("类型实体' App \ Entity \ Location'对于ID id(265)不是   发现"。)

我希望能够忽略此错误,而是显示类似"缺少相关对象"。

似乎可以通过Twig中的某些检查来解决这个问题,但是检查关系是否为空或未定义也不起作用 - 它们仍然找到关系,但是当在相关实体上调用属性时,异常扔了。

有没有人解决过这个问题?

2 个答案:

答案 0 :(得分:3)

您可以检查实体是否存在于Twig扩展名

类似的东西:

public function isRelatedEntityDefined($entity)
{    
   try {
        if(isset($entity->getSomeField()) return true;        
   } catch (EntityNotFoundException $e) {
        return false;
   }
}

答案 1 :(得分:0)

看看这个主题 On delete cascade with doctrine2

您的注释不是问题吗?

在你自己的一面,ID仍然被定义,但实体不再存在。

你应该这样做:

* @JoinColumn(name="locationId", referencedColumnName="id", onDelete="set null")