【问题标题】:Symfony2 doctrine nested join relationSymfony2 学说嵌套连接关系
【发布时间】:2017-02-03 08:33:31
【问题描述】:

我想用我的查询做这样的事情:

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

谁能告诉我,我是如何做到这一点的?

【问题讨论】:

    标签: mysql symfony doctrine dql


    【解决方案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();
    

    【讨论】:

    • 是的。谢谢。为我工作。抱歉反应慢。 @piyushsingh
    • 太棒了。不用担心! :)
    【解决方案2】:

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

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

    【讨论】:

    • 我会 return $query->getArrayResult(); 但不行。
    • 你得到什么结果?你得到一个空值吗?
    猜你喜欢
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2014-09-29
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多