Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

valeriabarros

Select em duas tabelas com Doctrine

Recommended Posts

Bom dia.

 

Pessoal, estou usando o Doctrine para minhas manipulações com o banco. Mas preciso fazer select em duas tabelas de repositórios diferentes, e ainda não consegui com o createQueryBuilder.

Alguém conhece alguma forma de fazer isso?

 

O mais próximo que cheguei foi isso.

 

 

 
 $ent1 = $this->doctrineEM->getRepository("Entity\\Reator\\Ent1");
 $ent2 = $this->doctrineEM->getRepository("Entity\\Reator\\Ent2);
 
                $query = $ent1->createQueryBuilder()->join('r.fkPedido','p');
                $query .= $ent2->createQueryBuilder('s')->join('s.fkPedido', 'p');
 
//Ele retorna os dois selects juntos
//SELECT r FROM Ent1 rSELECT s FROM Ent2 s
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou lendo a documentação.

Diretamente no SQL eu consigo com o UNION, mas o Doctrine não suporta, nem com o Native Query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Elas não são relacionadas..

Se fosse esse o caso seria fácil, no próprio queryBuilder eu adiciono o join e referencio a Entity, com a anotattion.

 

O que eu preciso seria

 

SELECT r.FkPedido FROM RecebimentoMaterial r UNION select s.FkPedido FROM Selagem s 

 

Mas já pesquisei em toda a documentação, e realmente não suporta Union, porque são duas Entidades. O jeito vai ser criar uma view.

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A título de informação, e para fechar o tópico, a solução que normalmente usamos para esse caso é a criação de views.

Após criar uma view com union diretamente no banco, mapeei a Entity, e referenciei às tabelas correspondentes, e como são objetos, os acessei pelos gets.

Ainda não há (ou não achei) outra solução para trabalhar com union em Doctrine.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.