Так в доктрине если в селекте указать связанные сущности в запросе она автоматом жадно загрузит. Тоесть в репе у вас запрос который принимает ваш with параметр и докидывает join с addSelect к базовому запросу. Про квери билдер он же есть в ентити менеджере в доктрине и доступен в репозитории, зачем городить еще один класс.
Так в доктрине если в селекте указать связанные сущности в запросе она автоматом жадно загрузит. Тоесть в репе у вас запрос который принимает ваш with параметр и докидывает join с addSelect к базовому запросу. Про квери билдер он же есть в ентити менеджере в доктрине и доступен в репозитории, зачем городить еще один класс.