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 表单 > 实体字段类型 > 查询构建器 > 可能的子选择?的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2 - 如何阻止 Form->handleRequest 清空帖子数据中不存在的字段
Symfony2 实体字段类型替代“property”或“__toString()”?