代码之家  ›  专栏  ›  技术社区  ›  Andrew Atkinson

Symfony2表单>实体字段类型>查询生成器>子选择是否可行?

  •  1
  • Andrew Atkinson  · 技术社区  · 11 年前

    我有一个实体字段类型的表单。
    在这个实体字段类型中,我有一个查询生成器,因为我只想选择一些记录。
    然而,我想在这个查询生成器中进行子选择,我不确定这是正确的方法:

    'query_builder' => function(EntityRepositorty $er) {
        $subq = $er->createQueryBuilder()        
        //cannot select other entity here?
    
        return $er->createQueryBuilder('a')
        ->leftJoin($subq)
        ->where('blah blah')
    }
    

    有人遇到过这个问题吗?他们的解决方案是什么?

    左侧联接看起来类似于:

    LEFT JOIN (select * from `table_c` order by date desc) as c on c.status_id = a.id
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   ConcurrentHashMap    10 年前

    您的描述表明,表c是作为一对多关系映射到表a上的。您应该只使用正常的条令联接:

    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('c')
        ->join('c.a', 'a');
    }
    

    您需要使用普通联接,因为左联接将为您提供表c中的所有内容,无论它是否与a有关。