Symfony2 表单 > 实体字段类型 > 查询构建器 > 可能的子选择?

Posted

技术标签:

【中文标题】Symfony2 表单 > 实体字段类型 > 查询构建器 > 可能的子选择?【英文标题】:Symfony2 Form > Entity Field Type > query builder > subselect possible? 【发布时间】:2013-04-11 09:48:31 【问题描述】:

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

'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

【问题讨论】:

您真的需要添加子查询吗?你们两个实体之间的关系如何? 你为什么不用实体之间的正常关系来做这个? 我需要从 table_c 获取最新的值。进一步解释? 【参考方案1】:

您的描述表明表 c 作为一对多关系映射到表 a 上。您应该只使用正常的学说连接:

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

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

【讨论】:

以上是关于Symfony2 表单 > 实体字段类型 > 查询构建器 > 可能的子选择?的主要内容,如果未能解决你的问题,请参考以下文章