0

我在运行具有多个嵌套联接的查询时遇到问题。我发现学说有一个问题,如果你运行一个有两个以上连接的查询,它很快就会变得非常昂贵。

我在这里找到了一篇文章:https ://ocramius.github.io/blog/doctrine-orm-optimization-hydration/描述了通过多种水合技术的解决方案,但是当我尝试运行查询时遇到了问题。我似乎无法获得部分权利,因此我的第二个查询正在使用第一个查询中预先存在的水合数据。

基本上我需要能够从水合数据 ca.member (这是一个数组)中加入结果

这是我的查询:

//first query to grab and hydrate data
$qb = $this->createQueryBuilder('ca');
        $case_alterations = $qb->select('ca, cg, cma')
            ->innerJoin('ca.gene', 'cg')
            ->leftJoin('ca.mask', 'm')
            ->leftJoin('ca.member', 'cma')
            ->where('ca.case_id = :case_id')
            ->andWhere('m.id IS NULL')
            ->setParameter('case_id', $case_id)
            ->getQuery()
            ->getResult()
        ;

//second query should grab the already hydrated data in memory and perform the join
        $query = $this->createQueryBuilder('ca')
            ->select('partial ca.{member}, cr')
            ->leftJoin('ca.result', 'cr')
            ->getQuery()
            ->getResult()
        ;

这是我一直遇到的错误,因为它来自第一个查询而不是子集成员的引用案例:

\Entity\Case has no association named result
4

0 回答 0