El uso de diferentes administradores de objetos (administradores de entidades) no permite que los gráficos de objeto se crucen. Ese caso es demasiado complejo y no está gestionado por Doctrine ORM.
Si necesita un caso como este, mantenga los gráficos de objetos desconectados guardando los identificadores de los objetos relacionados (estilo antiguo) en lugar de hacer una referencia a ellos, luego obtenga manualmente los objetos a través de los servicios. Puede encontrar un buen ejemplo de cómo esto funcionaría en un example of connection between Doctrine2 ORM and Doctrine2 MongoDB ODM. Alternativamente, también puede usar un detector de eventos @PostLoad
que rellena datos en sus entidades creando el enlace a través de los repositorios que he vinculado en el ejemplo. Lo mismo para @PostPersist
(que en su lugar debería extraer los identificadores para los objetos relacionados), pero tenga en cuenta que esta técnica puede ser realmente desordenada.
Además, si su RDBMS admite operaciones entre bases de datos en un solo host, puede simplemente usar un único EntityManager y hacer referencia a la otra tabla con @ORM\Table(name="schemaname.tablename")
.
* si su RDBMS admite operaciones entre bases de datos en un solo host, puede simplemente usar un solo EntityManager y hacer referencia a la otra tabla *. Excelente consejo ¡Gracias! – noisebleed
Descubrió que Doctrine solo detecta cambios de esquema en las tablas 'default_connection', cuando usa solo un administrador de entidades y múltiples bases de datos. Alguna idea para solucionar esto? – noisebleed
@noisebleed de los documentos: $ php app/console doctrine: schema: update --force --em = customer. lea más aquí: http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html – apfz