ZF2 + Doctrine 2 com mais de um Entity Manager

254 views
Skip to first unread message

diogo.domanski

unread,
Oct 8, 2013, 2:00:51 PM10/8/13
to zfbr...@googlegroups.com
Boa tarde a todos,

Tenho um projeto usando ZF2 + Doctrine2 e surgiu a necessidade de trabalhar com duas bases de dados distintas. Alguém sabe como configurar mais de um Entity Manager para trabalhar com múltiplas bases de dados?

Agradeço desde já

Diogo

Isaac Henrique

unread,
Oct 8, 2013, 2:11:15 PM10/8/13
to zfbr...@googlegroups.com
<?php return array( 'doctrine' => array( 'connection' => array( //default connection (configured by default for DoctrineORMModule) 'orm_default' => array( 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 'params' => array( 'host' => 'firsthost.com', 'port' => '3306', 'user' => 'first_host_user', 'password' => 'first_host_pass', 'dbname' => 'site', ) ), //connection used for shop module 'orm_shop' => array( 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 'params' => array( 'host' => 'secondhost.com', 'port' => '3306', 'user' => 'second_host_user', 'password' => 'second_host_pass', 'dbname' => 'shop', ) ) ) ) );

diogo.d...@gmail.com

unread,
Oct 8, 2013, 2:22:14 PM10/8/13
to zfbr...@googlegroups.com
Isaac,

E como eu faço para instanciar um EntityManager usando uma conexão ou outra?

Grato

Diogo


Em 8 de outubro de 2013 15:11, Isaac Henrique <isaac....@gmail.com> escreveu:
<?php return array( 'doctrine' => array( 'connection' => array( //default connection (configured by default for DoctrineORMModule) 'orm_default' => array( 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 'params' => array( 'host' => 'firsthost.com', 'port' => '3306', 'user' => 'first_host_user', 'password' => 'first_host_pass', 'dbname' => 'site', ) ), //connection used for shop module 'orm_shop' => array( 'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 'params' => array( 'host' => 'secondhost.com', 'port' => '3306', 'user' => 'second_host_user', 'password' => 'second_host_pass', 'dbname' => 'shop', ) ) ) ) );

--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-u...@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR
---
Você recebeu esta mensagem porque está inscrito em um tópico do grupo "Zend Framework Brasil" dos Grupos do Google.
Para cancelar a inscrição neste tópico, acesse https://groups.google.com/d/topic/zfbrasil/6ReYq3q6brc/unsubscribe.
Para cancelar a inscrição neste grupo e todos os seus tópicos, envie um e-mail para zfbrasil+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Alisson Nunes da Rocha

unread,
Oct 8, 2013, 2:23:59 PM10/8/13
to zfbr...@googlegroups.com
Nunca precisei trabalhar com 2 instancia, mas legal a dica do ISAAC.


Você está recebendo esta mensagem porque se inscreveu no grupo "Zend Framework Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para zfbrasil+u...@googlegroups.com.

Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
att,
Alisson Nunes da Rocha

e-mail/msn: alissond...@gmail.com
55 (61) 8503 2458 - Gama-DF
Site Pessoal - (www.alisson.eti.br)
Hostion - Hospedagem de Site (http://www.hostion.com.br)

Isaac Henrique

unread,
Oct 8, 2013, 2:35:08 PM10/8/13
to zfbr...@googlegroups.com
$sm->get('doctrine.entitymanager.orm_shop');
________________________________
       Isaac Henrique Barbosa Nunes
  Analista e Desenvolvedor de Sistema

Isaac Henrique

unread,
Oct 8, 2013, 2:35:28 PM10/8/13
to zfbr...@googlegroups.com
$sm->get('doctrine.entitymanager.orm_default');

Jaime Marcelo Valasek

unread,
Oct 8, 2013, 2:47:41 PM10/8/13
to zfbr...@googlegroups.com
Eu também nunca precisei usar duas instancias, mas gostei muito desta dica.

diogo.d...@gmail.com

unread,
Oct 8, 2013, 6:56:49 PM10/8/13
to zfbr...@googlegroups.com
Isaac,

Muito obrigado pela ajuda. Contudo, fique com uma dúvida: apenas definindo a conexão orm_shop no arquivo doctrine_orm.local.php é suficiente para o ServiceManager resolver o "doctrine.entitymanager.orm_shop"?

Diogo

diogo.domanski

unread,
Oct 9, 2013, 1:47:33 PM10/9/13
to zfbr...@googlegroups.com
Issac,

As coisas estão quase dando certo. O problema é que o módulo que configurei e estou usando a segunda conexão faz referência a entidades de outros módulos. Isto está causando a seguinte exceção:

The class 'Pessoa\Entity\Integrante' was not found in the chain configured namespaces Application\Entity

Acho que isto é problema de configuração do ZF2 e não mais do Doctrine. Se alguém tiver alguma dica de como resolver, qualquer ajuda é bem vinda.

Abs

Diogo

Isaac Henrique

unread,
Oct 9, 2013, 1:57:39 PM10/9/13
to zfbr...@googlegroups.com
Diogo no module.config.php tu pode  mapear a conexão que deseja utilizar para aquele modulo especifico:


return array(
    'doctrine' => array(
         
        // Metadata Mapping driver configuration
        'driver' => array(
            'shop_entities' => array(
                'class' => '\Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'cache' => 'array',
                'paths' => array(__DIR__ . '/../src/Shop/Entity')
            ),
            'orm_shop' => array(
                'class'   => 'Doctrine\ORM\Mapping\Driver\DriverChain',
                'drivers' => array(
                    'Shop\Entity' => 'shop_entities'
                )
            )
        ),


--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-u...@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Zend Framework Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para zfbrasil+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

diogo.d...@gmail.com

unread,
Oct 9, 2013, 2:25:03 PM10/9/13
to zfbr...@googlegroups.com
Isaac, foi exatamente isto que eu fiz - e que começou a gerar o erro.


Você recebeu esta mensagem porque está inscrito em um tópico do grupo "Zend Framework Brasil" dos Grupos do Google.
Para cancelar a inscrição neste tópico, acesse https://groups.google.com/d/topic/zfbrasil/6ReYq3q6brc/unsubscribe.
Para cancelar a inscrição neste grupo e todos os seus tópicos, envie um e-mail para zfbrasil+u...@googlegroups.com.

diogo.domanski

unread,
Oct 9, 2013, 2:26:32 PM10/9/13
to zfbr...@googlegroups.com
Além das instruções do Isaac, eu utilizei o material deste link http://dan-homorodean.blogspot.com.br/2013/03/zf2-with-doctrineormmodule-using.html
Message has been deleted

Isaac Henrique

unread,
Oct 9, 2013, 2:27:52 PM10/9/13
to zfbr...@googlegroups.com
Você está querendo trabalhar com duas conexões para o mesmo modulo?



Em 9 de outubro de 2013 15:26, diogo.domanski <diogo.d...@gmail.com> escreveu:
Além das instruções do Isaac, eu utilizei o material deste link http://dan-homorodean.blogspot.com.br/2013/03/zf2-with-doctrineormmodule-using.html

--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-u...@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Zend Framework Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para zfbrasil+u...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply all
Reply to author
Forward
0 new messages