Prezados, percebi que o QueryBuilder do doctrine não possui a função union, existe alguma extensão que possibilita utilizá-la?
Prezados, percebi que o QueryBuilder do doctrine não possui a função union, existe alguma extensão que possibilita utilizá-la?
Olá Henrique! Tudo bem?
Peço perdão pela demora em respondê-lo.
No Doctrine ORM, o QueryBuilder não possui uma função nativa para o UNION. No entanto, é possível contornar essa limitação utilizando a função "addSelect" em conjunto com a função "from" para adicionar uma subquery ao seu SQL.
Aqui está um exemplo de como você pode usar a função UNION no QueryBuilder:
$subquery1 = $entityManager->createQueryBuilder()
->select('t1.column1, t1.column2')
->from('Entity1', 't1')
->getQuery()
->getSQL();
$subquery2 = $entityManager->createQueryBuilder()
->select('t2.column1, t2.column2')
->from('Entity2', 't2')
->getQuery()
->getSQL();
$query = $entityManager->createQueryBuilder()
->select('q.column1, q.column2')
->from('(' . $subquery1 . ' UNION ' . $subquery2 . ')', 'q')
->getQuery();
$results = $query->getResult();
Nesse exemplo, criamos duas subqueries usando o QueryBuilder para as entidades "Entity1" e "Entity2". Em seguida, concatenamos as subqueries usando a função UNION e adicionamos a subquery resultante à cláusula FROM do QueryBuilder principal.
Lembre-se de substituir 'Entity1' e 'Entity2' pelos nomes das suas entidades e 'column1' e 'column2' pelos nomes das colunas que você deseja selecionar.
Espero que isso ajude! Se tiver mais alguma dúvida, estarei à disposição.
Abraços e bons estudos!