Вообще говоря, вы не должны этого делать.
Сущности, как правило, не должны знать о менеджере сущностей (напрямую или через некоторый промежуточный объект).
Причиной этого является в основном тестируемость, но, по моему опыту, она помогает организовать вещи другими способами.
Я бы подошел к этому, разработав класс обслуживания, который будет выполнять поиск для вас.Ваш контроллер (или что-то еще) будет управлять им так:
<?php
// create a new service, injecting the entitymanager. if you later wanted
// to start caching some things, you might inject a cache driver as well.
$member = $em->find('Member',$member_id); //get a member, some how.
$svc = new MemberService($em);
$favoriteCommentaries = $svc->getFavoriteCommentaries($member);
Как я намекаю в комментарии, если позже вы решите, что хотите добавить кэширование (например, через memcached), чтобы избежать частых поисков,Вы бы сделали это где-нибудь рядом или в этом классе обслуживания.Это делает ваши сущности красивыми, простыми и легко проверяемыми.Поскольку вы внедряете свой EntityManager в сервис во время создания, вы можете смоделировать это при необходимости.
getFavoriteCommentaries () может использовать различные реализации.Тривиальным было бы передать его в Member :: getFavoriteCommentaries (), который фактически загрузит все, а затем отфильтровать «любимые».Вероятно, это не будет особенно хорошо масштабироваться, поэтому вы можете улучшить его, используя EM для извлечения только тех данных, которые вам нужны.