У меня следующий вопрос:
Представьте, что у нас есть сущность, например, Событие .
В EventRepository классе я добавил несколько методов для запроса каких-либо событий.
В EventController У меня есть коллекция событий. Последний шаг - отобразить все эти события в шаблоне. В принципе ничего сложного нет:
{% for event in events %}...{% endfor %}
Но у меня есть одно дополнительное условие : мне нужно отобразить пользователей, которые посещают каждое событие (например, 10 пользователей для каждого). Событие, связанное с Пользователем с ассоциацией «многие ко многим». Хорошо, я добавил метод в EventRepository, чтобы найти участников события. Но у меня нет доступа к EventRepository в шаблоне Twig ...: (
вижу три варианта:
- (быстро и хитро) Получите участников напрямую от организации:
{% for event in events %}{% set participants = event.participants %}{% endfor %}
. Это работает, но когда у нас будет более 1000 участников? Afaik event-> getParticipants () будет опрашивать всех 1000+ пользователей сразу, что сломает мою страницу.
- передать экземпляр EventRepository в temlpate и запросить 10 пользователей для каждого события, примерно так:
{% for event in events %}{% set participants = eventRepository.getEventParticipants(event.id, max) %}{% endfor %}
. Это выглядит более правильно, но похоже, что это нарушает основные концепции MVC - запросы к базе данных в шаблонах.
- Зацикливание событий в контроллере и подготовка списка участников для каждого. Выглядит некрасиво (по крайней мере, дублирующий цикл для событий и больше кода в контроллере), но более или менее правильно (и что нужно делать, когда появляются новые условия?).
Можете ли вы принять какие-либо советы для этого случая? Как мне нужно запросить отношение N-N и где в моем коде?