Utiliser JOIN dans Symfony2 / Doctrine SQL

J'ai un problème en essayant d'UTILISER QueryBuilder OU DQL.

J'ai la relation suivante:

Utilisateur <-1:n-> Profil de <-n:m-> RouteGroup <-1:n-> Route

Je voudrais faire un DQL la liste de tous les itinéraires qu'un utilisateur a accès.
Je peux obtenir cette information avec le code suivant:

$usr = $this->container->get('security.context')->getToken()->getUser();
foreach ($usr->getProfiles() as $profile){
    foreach ($profile->getRoutegroups() as $routegroup){
        var_dump($routegroup->getRoutes()->toArray());
     }
}

Pour une raison évidente, je ne peux utiliser ce code, sinon je vais surcharger mon serveur, LOL.

J'ai essayé l'une des approches suivantes:

DQL:

$em->createQuery('SELECT p FROM CRMCoreBundle:User u
                  JOIN CRMCoreBundle:Profile p
                  JOIN CRMCoreBundle:RoleGroup rg
                  JOIN CRMCoreBundle:Role r
                  WHERE
                    u.id=:user')
        ->setParameter('user', $user->getId())
        ->getResult();

QueryBuilder (j'ai essayé à l'aide de l'u.profils - le nom de la relation au lieu de l'entité - mais cela ne fonctionne pas aussi):

$em->createQueryBuilder()
        ->select('r')
        ->from('CRMCoreBundle:User', 'u')
        ->innerJoin('u.profiles','p')
        ->where('u.id = :user_id')
        ->setParameter('user_id', $user->getId())
        ->getQuery()
        ->getResult();

Quelqu'un peut-il aider svp???

Mise à JOUR: j'ai essayé Zeljko de la solution et de ce script:

    return $this->getEntityManager()
        ->createQueryBuilder()
        ->select('u, r')
        ->from('CRMCoreBundle:User', 'u')
        ->innerJoin('u.profiles','p')
        ->innerJoin('p.routegroups','rg')
        ->innerJoin('rg.routes','r')
        ->where('u.id = :user_id')->setParameter('user_id', $user->getId())
        ->getQuery()
        ->getResult();

Mais j'ai eu cette erreur:

The parent object of entity result with alias 'r' was not found. The parent alias is 'rg'.

Si je change "->select('u, r')", "- >select('r')", j'obtiens ceci:

[Semantical Error] line 0, col -1 near 'SELECT r FROM': Error: Cannot select entity through identification variables without choosing at least one root entity alias.

source d'informationauteur Marcelo Diotto