Symfony2 doctrine嵌套连接关系

时间:2017-02-03 08:33:31

标签: 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()
    ->select('P,C,CoC')
    ->from('DspAppsBundle:Parent', 'P')
    ->leftJoin('P.child', 'C')
    ->leftJoin('C.childOfChild', 'CoC')
    ->where('P.id = 1')
    ->getQuery();

有人可以告诉我,我的工作方式如何?

2 个答案:

答案 0 :(得分:1)

嗨尝试这样的事情(你可以用getSingleResult()或任何适合你的东西替换getResult()):

$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();

答案 1 :(得分:0)

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

$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得到什么?