如何将带有子查询的 SQL 查询转换为 Doctrine QueryBuilder 格式?
How to convert SQL query with subquery to Doctrine QueryBuilder format?
我想将此 sql 声明转录为教义格式。这很复杂,因为我不知道如何执行子查询。
语句如下:
SELECT * FROM articulo WHERE descripcion = (SELECT descripcion FROM articulo WHERE codigo LIKE 4060981104537)
您可以使用 Doctrine 表达式 API 进行子查询。
您的查询示例:
您应该将以下代码放入您的 文章 实体
的 Doctrine 存储库
$codigo = '4060981104537';
$qb = $this->createQueryBuilder('a');
$qb->where(
$qb->expr()->in(
'a.descripcion',
$this->createQueryBuilder('a2')
->select('a2.descripcion')
->where('a2.codigo LIKE :codigo')
->setParameter('codigo', $codigo)
->getDQL()
)
);
这样做:
$codigo = 4060981104537;
$expr = $em->getExpressionBuilder();
$em->createQueryBuilder()
->select('*')
->from('articulo')
->where(
$expr->in(
'articulo.descripcion',
$em->createQueryBuilder()
->select('*')
->from('articulo', 'secondArticulo')
->where('secondArticulo.codigo LIKE :codigo')
)
->getDQL()
)
)
->setParameter('codigo', $codigo);
有关更多信息,请查看此 link
我是这样解决的:
$codigo = '4060981104537';
$qb = $this->createQueryBuilder('a2')
->select('a2.descripcion')
->where('a2.codigo LIKE :codigo')
->setParameter('codigo', $codigo);
$descripcion = $qb->getQuery()->getResult();
$qb = $this->createQueryBuilder('m')
->where('m.descripcion= :descripcion')
->setParameter('descripcion', $descripcion);
return $qb->getQuery()->getResult();
我想将此 sql 声明转录为教义格式。这很复杂,因为我不知道如何执行子查询。 语句如下:
SELECT * FROM articulo WHERE descripcion = (SELECT descripcion FROM articulo WHERE codigo LIKE 4060981104537)
您可以使用 Doctrine 表达式 API 进行子查询。 您的查询示例:
您应该将以下代码放入您的 文章 实体
的 Doctrine 存储库$codigo = '4060981104537';
$qb = $this->createQueryBuilder('a');
$qb->where(
$qb->expr()->in(
'a.descripcion',
$this->createQueryBuilder('a2')
->select('a2.descripcion')
->where('a2.codigo LIKE :codigo')
->setParameter('codigo', $codigo)
->getDQL()
)
);
这样做:
$codigo = 4060981104537;
$expr = $em->getExpressionBuilder();
$em->createQueryBuilder()
->select('*')
->from('articulo')
->where(
$expr->in(
'articulo.descripcion',
$em->createQueryBuilder()
->select('*')
->from('articulo', 'secondArticulo')
->where('secondArticulo.codigo LIKE :codigo')
)
->getDQL()
)
)
->setParameter('codigo', $codigo);
有关更多信息,请查看此 link
我是这样解决的:
$codigo = '4060981104537';
$qb = $this->createQueryBuilder('a2')
->select('a2.descripcion')
->where('a2.codigo LIKE :codigo')
->setParameter('codigo', $codigo);
$descripcion = $qb->getQuery()->getResult();
$qb = $this->createQueryBuilder('m')
->where('m.descripcion= :descripcion')
->setParameter('descripcion', $descripcion);
return $qb->getQuery()->getResult();