Mysql Symfony2原则嵌套联接关系

Mysql Symfony2原则嵌套联接关系,mysql,symfony,doctrine,dql,Mysql,Symfony,Doctrine,Dql,我想对我的查询执行以下操作: SELECT * FROM `Parent` P LEFT JOIN `child` C ON P.id = C.parentID LEFT JOIN `childOfChild` CoC ON C.id = CoC.cID WHERE P.id = 1 我尝试了这个QueryBuilder,但不起作用 $query = $this->getEntityManager() ->createQueryBuilder() ->sel

我想对我的查询执行以下操作:

SELECT * FROM `Parent` P 
LEFT JOIN `child` C ON P.id = C.parentID
LEFT JOIN `childOfChild` CoC ON C.id = CoC.cID
WHERE P.id = 1
我尝试了这个QueryBuilder,但不起作用

$query = $this->getEntityManager()
    ->createQueryBuilder()
    ->select('P,C,CoC')
    ->from('DspAppsBundle:Parent', 'P')
    ->leftJoin('P.child', 'C')
    ->leftJoin('C.childOfChild', 'CoC')
    ->where('P.id = 1')
    ->getQuery();

有人能告诉我,我是如何做到这一点的吗?

您需要执行查询才能得到结果

$query = $this->getEntityManager()
    ->createQueryBuilder()
    ->select('P,C,CoC')
    ->from('DspAppsBundle:Parent', 'P')
    ->leftJoin('P.child', 'C')
    ->leftJoin('C.childOfChild', 'CoC')
    ->where('P.id = 1')
    ->getQuery();
$result = $query->execute();

您在
$result
中得到了什么?

您可以尝试这样的方法(您可以用getSingleResult()替换getResult(),或者任何适合您的方法):


我确实
return$query->getArrayResult()但不起作用。结果如何?你得到空值了吗?是的。谢谢为我工作。对不起,请慢一点@皮尤辛哈很有趣。不用担心!:)
$query = $this->getEntityManager()
    ->createQueryBuilder()
    ->select('P,C,CoC')
    ->from('DspAppsBundle:Parent', 'P')
    ->leftJoin('DspAppsBundle:Child', 'C', 'WITH', 'P.id = C.parentId')
    ->leftJoin('DspAppsBundle:ChildOfChild', 'CoC', 'WITH', 'C.id = CoC.cId')
    ->where('P.id = 1')
    ->getQuery()
    ->getResult();