1

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

'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
4

1 回答 1

1

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

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

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

于 2013-04-12T16:57:58.407 回答