2017-02-19 17 views
1

У меня возникла проблема с доступом к значениям из объединенного запроса. Я построил запрос в репозитории, который объединяет/оставляет таблицы объединений.Доступ к значениям из объединенного запроса из Doctrine with Twig

Чтобы сделать следующий код несколько понятным: у меня назначена встреча. Это назначение является частью события, а событие является частью группы событий. В группе событий есть участники. В реальной жизни это означает, что каждый участник мероприятия также является участником встречи. Например, есть учебный центр. Этот центр имеет различные учебные курсы (бег, подъем ...). Каждый курс имеет разные события для разных групп (например, группа А всегда в понедельник и пятницу, а группа В - всегда вторник и четверг). Таким образом, вы можете принять участие в работе в группе 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(); 

Если я смотрю в доктрине, я также получить правильные результаты, при запуске обработанного запроса в MySQL. Но если я хочу получить доступ к значению из таблицы в моем файле twig, это не сработает.

{% for appointment in appointments|default(false) %} 
    <li class="list-group-item"> 
     <a href="livemode.html"> 
      <span class="col-md-4">{{ appointment.getEventGroup() }}&emsp;<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") }}&emsp;09:30 Uhr</span> 
     </a> 
    </li> 
{% endfor %} 

Сущности и методы верны. Другие запросы работают нормально. Но с этим я получаю ошибку Symfony, что метод неправильный. Если я не использую значения и цикл, я получаю 4 раза элементы html. Это также правильное количество результатов. Может быть, проблема с внутренним соединением? Потому что с этим я не просто связываю идентификаторы с другими объектами в db, но присоединяю их несколько раз к событию? Могу ли я получить доступ к значениям по-другому?

+0

Слишком поздно добавить еще один ответ? Isouza может работать, но я вижу, что вы делаете неправильно ... –

ответ

1

Если объект правильно отображается, вы должны быть в состоянии получить доступ к связи и свойства просто доступ к ним непосредственно:

{% for appointment in appointments|default(false) %} 
    <li class="list-group-item"> 
     <a href="livemode.html"> 
      <span class="col-md-4">{{ appointment.eventGroup }} <span class="tag tag-default">{{ appointment.name }}</span></span> 
      <span class="col-md-4">{{ appointment.topicBlock.name }}</span> 
      <span>{{ appointment.date|date("d.m.Y") }} 09:30 Uhr</span> 
     </a> 
    </li> 
{% endfor %} 

Это предполагает, что Appointment лицо имеет EventGroup отношения отображенный, а также имеют геттер метод для этого.

Если он не работает, вы можете добавить код для своих объектов, и я отредактирую свой ответ.

+1

Спасибо. Я действительно не знаю, почему я этого не делал сам. Ничего не изменилось с предыдущей практики. Может быть, я немного устал. Я сидел более 1 часа перед этим, но я должен был написать 'назначение.event.eventgroup.getName()', потому что у меня, конечно, нет прямого доступа от 'назначение' к' eventgroup', потому что 'event' is между ними, а затем получить атрибут 'name', вызывая' getName() ' – kruben

 Смежные вопросы

  • Нет связанных вопросов^_^