[英]Doctrine2 repository, Many-to-Many associations and Twig templates: best practices
我有以下問題:
想象一下,我們有一個實體,例如Event 。
在EventRepository類中,我添加了一些查詢某種事件的方法。
在EventController中,我收到了一系列事件。 最后一步 - 在模板中顯示所有這些事件。 基本上沒有什么困難:
{% for event in events %}...{% endfor %}
但我有一個額外的條件 :我需要顯示轉到每個事件的用戶(例如每個用戶10個用戶)。 事件鏈接到具有多對多關聯的用戶。 好的,我已經在EventRepository中添加了方法來查找事件參與者。 但我無法訪問Twig模板中的EventRepository ...... :(
我看到三個選擇:
{% for event in events %}{% set participants = event.participants %}{% endfor %}
。 這有效,但是當我們有參與者數量超過1000? Afaik event-> getParticipants()將立即查詢所有1000多個用戶,這將打破我的頁面。 {% for event in events %}{% set participants = eventRepository.getEventParticipants(event.id, max) %}{% endfor %}
。 這看起來更正確,但看起來這打破了核心MVC概念 - 在模板中查詢數據庫。 你能為這個案子提出任何建議嗎? 我如何查詢NN關系以及我的代碼中的位置?
只要您的事件實體上的關系設置正確,您就應該能夠在需要時延遲加載用戶。 因此,例如在迭代您的事件時,您應該能夠調用..
$event->getUsers();
Doctrine2非常適合這些確切類型的操作(在需要時延遲加載內容)。
確保事件和用戶之間存在有效關系,並在Events實體中編寫getter,以將所有用戶拉出為數組,或者使用Doctrine的ArrayCollection類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.