【发布时间】:2015-06-18 16:04:14
【问题描述】:
我需要创建一个使用 IN 语句的查询构建器表达式,我想在其中放置另一个由 querybuilder 创建的查询。在 DQL 中,我可以得到的查询是:
SELECT u
FROM BundleUsuarioBundle:Usuario u
WHERE u.id IN (
SELECT u2.id
FROM BundleTramiteBundle:ExamenTeorico et
JOIN et.usuarioHabilitacion u2
WHERE u2.centro = :centro
) ORDER BY u.apellido ASC, u.nombre ASC
但我不使用它,因为我需要将它放在表单实体字段的“query_builder”选项中。所以,我需要一个 QB,但我不知道如何嵌套 querybuilder 表达式。我实际上有两个 QueryBuilder 格式的查询,但分开了:
$qb = $this->em->createQueryBuilder();
$qb
->select('usuario_habilitacion.id')
->from('BundleTramiteBundle:ExamenTeorico', 'examen_teorico')
->join('examen_teorico.usuarioHabilitacion', 'usuario_habilitacion');
$user = $this->getUser();
if ( !$this->esTipoASPV($user) ) {
$centro = $this->getCentro();
$qb
->andWhere($qb->expr()->eq('usuario_habilitacion.centro', ':centro'))
->setParameter(':centro', $centro->getId());
}
和:
$er
->createQueryBuilder('u')
->where($qb->expr()->in('u.id', ___???___ ))
->addOrderBy("u.apellido", "ASC")
->addOrderBy("u.nombre", "ASC");
【问题讨论】:
标签: symfony doctrine-orm