А в доктрине у вас все выборки должны находиться в вашем репозитории, и там вы уже решаете что как и когда применять и как юзать query builder. То есть если вы хотите взять каких-нибудь данных вы должны взять репозиторий и попросить его дать вам данных. То есть от доктрины будут зависеть только репозитории.
Репозитории можно регистрировать как обычные сервисы:
class: Doctrine\ORM\EntityRepository
factory_service: doctrine.orm.default_entity_manager
factory_method: getRepository
arguments:
- Acme\CustomerBundle\Entity\Customer
в идеале такие операции как $em->persist тоже стоит делать внутри репозитория а $em->flush вообще во фронт контроллере (перед отдачей респонсов что бы появились id-шки).
Так же у доктрины есть
глобальные фильтры как прямой аналог скоупов в Yii но их стоит использовать крайне осторожно.