Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Estou lendo a documentação.
Diretamente no SQL eu consigo com o UNION, mas o Doctrine não suporta, nem com o Native Query.
No seu caso vc tem uma chave primaria na entity1 e na entity2 correto?
procure pelo Join!
vc pode fazer isso via anotações tb na Entity! Abs!
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.
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.
Da um olhada na documentação!
http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/dql-doctrine-query-language.html