我在访问联接查询中的值时遇到问题。我在一个连接/离开连接表的存储库中构建了一个查询。
使下面的代码有点容易理解:我有一个约会。此约会是活动的一部分,活动是活动组的一部分。活动组有参与者。在现实生活中,这意味着事件的每个参与者也是约会的参与者。例如,有一个培训中心。该中心有不同的培训课程(跑步,升降......)。每个课程针对不同的团体有不同的活动(例如A组总是周一和周五,B组总是周二和周四)。所以你可以参加A组的跑步。而且约会是每个小组的正确日期和时间。
现在我想要一个人的所有约会。所以我的查询看起来像这样:
$qb = $this->createQueryBuilder('a')
->leftJoin('a.event', 'event')
->leftJoin('event.eventgroup', 'eventgroup')
->innerJoin('event.participants', 'p', 'WITH', 'p.id = :id')
->setParameter('id', $user->getId())
;
return $qb->getQuery()->getResult();
如果我查看doctrine,当在mysql中运行已处理的查询时,我也会得到正确的结果。但是,如果我想从我的twig文件中的表中访问一个值,它就不起作用。
{% for appointment in appointments|default(false) %}
<li class="list-group-item">
<a href="livemode.html">
<span class="col-md-4">{{ appointment.getEventGroup() }} <span class="tag tag-default">{{ appointment.getName() }}</span></span>
<span class="col-md-4">{{ appointment.getTopicBlock().getName() }}</span>
<span>{{ appointment.getDate()|date("d.m.Y") }} 09:30 Uhr</span>
</a>
</li>
{% endfor %}
实体和方法是正确的。其他查询工作正常。但是有了这个,我得到一个Symfony错误,该方法不正确。如果我不使用值和循环,我得到4倍的html元素。这也是正确的结果量。内连接可能有问题吗?因为我不只是将id链接到数据库中的其他实体,而是多次将它们连接到事件?我可以用其他方式访问这些值吗?
答案 0 :(得分:1)
如果实体已正确映射,您应该可以直接访问它们来访问关系和属性:
Appointment
这假定EventGroup
实体已映射{{1}}关系,并且还有一个getter方法。
如果它不起作用,您可以为实体添加代码,然后编辑我的答案。