если собиратесь делать join-ы из разных БД, то Doctrine позволяет сделать это: 
Cross Database Joins
не везде прямо говорится о том, что join не будет работать при нескольких EntityManager, только при одном, который получится при работе auto_mapping: true 
для этого прописываете в настройках config.yml:
doctrine:
   dbal:
        default_connection: main_db
        connections:
            main_db:
                driver:   "%database_users_driver%"
                host:     "%database_users_host%"
                port:     "%database_users_port%"
                dbname:   "%database_users_name%"
                user:     "%database_users_user%"
                password: "%database_users_password%"
                charset:  UTF8
            other_db:
                driver:   "%database_driver%"
                host:     "%database_host%"
                port:     "%database_port%"
                dbname:   "%database_name%"
                user:     "%database_user%"
                password: "%database_password%"
                charset:  UTF8
    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true
чтобы все заработало надо не забыть указать имена таблиц при определении Entity в формате "db_name.table_name", например: 
/**
 * Product
 *
 * @ORM\Table(name="main_db.Product")
 * @ORM\Entity(repositoryClass="AcmeBundle\Entity\ProductRepository")
 * 
 */
class Product
{ ....
после этого в своем EntityRepository спокойно себе формируете dql-запрос типа такого:
$sql = "SELECT p FROM AcmeBundle:Product p JOIN p.tag t WHERE ... ORDER BY ...";
query = $this->_em->createQuery($sql)->setParameters(array(...));
return $query->getResult();