Есть и другие вопросы по этому вопросу, но они не охватывают мой прецедент, я думаю.Правильный способ использования репозитория Entity в шаблоне контроллера и Twig
У меня есть Пользователь, у пользователя есть проекты. Проект может быть опубликован или нет.
Внутри Twig (в нескольких местах, в нескольких шаблонах) Я хочу показать количество опубликованных проектов, которые пользователь имеет.
Эта информация не сохраняется непосредственно в объекте Пользователя. Я мог бы написать функцию для этого в User Entity, но это потребует повторения проектов и проверки каждого опубликованного статуса. Это кажется медленным.
Другой способ заключается в том, чтобы написать запрос в пользовательском репо и получить подсчет всех опубликованных проектов. Но это будет означать, что запрос из Repo выполняется в каждом контроллере, а затем назначается каждому представлению Twig. Это кажется субоптимальным, так как мне нужно рассчитывать во многих местах и поэтому повторял бы этот запрос репо во многих местах. Возможно, в каждом контроллере.
Как я могу получить этот счет из Twig, из User Entity или из Repo?
ли запрос с расширения веточки. – Cerad
Вы можете использовать событие Doctrine postLoad (подробнее см .: http://doctrine-orm.readthedocs.org/en/latest/reference/events.html#postload), чтобы установить дополнительные свойства для вашего объекта после его загрузки из своего репозитория , Например, вы можете создать специальные свойства и соответствующие методы set nd get для получения номера проектов для текущего пользователя. – Alex
@ Алекс не страдает от проблем с эффективностью? Это не запрос, а вместо этого перебирает все проекты, чтобы проверить их опубликованный атрибут, чтобы затем создать новую коллекцию проектов. –