我是symfony2的新手。我的项目有两个实体
[1] Category and
[2] Evaluation
和类别有很多评价,所以问题是当我删除类别然后显示评价然后它显示我错误
"An exception has been thrown during the rendering of a template ("Entity was not found.") in HfAppBundle:SpecificEvaluations:index.html.twig at line 137. "
。
在第137行,这是内容{{evaluation.category.name}}
。我也试过
{% if evaluation.category.name is not null %}
{{evaluation.category.name}}
{% endif %}
但它也给我同样的错误。 任何人都可以帮忙吗?
感谢
答案 0 :(得分:2)
使用树枝测试defined:
{% if evaluation.category.name is defined %}
{{evaluation.category.name}}
{% endif %}
答案 1 :(得分:1)
不检查类别名称,而是检查与评估关联的类别是否存在。
{% if evaluation.getCategory %}
{{evaluation.category.name}}
{% endif %}
理想情况下,当您删除链接到多个评估的类别时,应删除已删除类别与评估之间的关系。
为此,指定在删除类别时是删除所有评估,还是在删除类别时将所有相关评估的类别设置为null。 为此,在yml中,关系应定义为
manyToOne:
user:
targetEntity: LB\CoreBundle\Entity\User
joinColumn:
name: user_id
referencedColumnName: id
onDelete: "SET NULL"
onDelete可以是" SET NULL"或" CASCADE"取决于您是否需要将评估中的类别字段设置为null或删除与类别相关的所有评估。
修改您的代码,以便在评估中设置类别,如下所示。将分类设置为null后,您没有持久进行评估。
$evaluations = $em->getRepository('HfAppBundle:Evaluation')->findByCategory($catId);
foreach ($evaluations as $evl) {
$evl->setCategory(null);
//this line was missing
$em->persist($evl);
}
$em->flush();
答案 2 :(得分:1)
尝试使用default
过滤器:
{{ evaluation.category.name|default('[No name]') }}