我想从 Doctrine DQL 查询中显示一个包含一些实体关系的表。
我的“主要”实体 Lead 与 Tour 的关系如下:
class Lead {
/**
* @var integer $tourId
* @ORM\Column(name="`tour_id`", type="integer")
*/
private $tourId;
/**
* @var Tour $tour
* @ORM\ManyToOne(targetEntity="Tour")
* @ORM\JoinColumn(name="tour_id", referencedColumnName="id")
*/
private $tour;
...
}
我使用 Doctrine2 DQL 从 DB 获取数据:
SELECT l, c
FROM BuvMarketplaceBundle:Lead l '
JOIN l.client c
请注意,我不加入 Tour,因为并非所有潜在客户都关联了 Tour,此字段可以为空。
然后我像这样打印:
{% for lead in leads %}
{{ lead.id }}
{% if lead.tour %}
{{ lead.tour.name }}
{% endif %}
{% endfor %}
问题出现在lead.tour 有一个数值的地方,但是这个值在tours 表中不存在(因为它已经被删除了)。我得到“找不到实体”。引用数据库中不存在的lead.tour 的异常。
我试图用is defined检查lead.tour ,不为空但没有任何作用。
Twig 不支持类型检查,因此没有基本功能可用于检查lead.tour 是对象或类似对象。
有什么方法可以检查 Twig 中的对象或 DQL 中的左连接?