[英]How to convert SQL query with subquery to Doctrine QueryBuilder format?
我想將此 sql 語句轉錄為 doctrine 格式。 這很復雜,因為我不知道如何執行子查詢。 語句如下:
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);
有關更多信息,請查看此鏈接
我解決了如下:
$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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.