2011-12-19 15 views
5

En mi aplicación symfony2, tengo dos conexiones de base de datos, me gustaría mantener las clases de entidad separadas y tener un conjunto de clases de entidad en un paquete y otro conjunto en otro paquete . Sin embargo cuando se trata de llamar a mi paquete, su por alguna razón no registrada como Entidad de espacio de nombres, el error es el siguiente:Symfony 2: Agregue otro espacio de nombres a Entity namespaces

Unknown Entity namespace alias 'AcmeStaffBundle'. 
500 Internal Server Error - ORMException 

he buscado donde expone los espacios de nombre de la entidad, y he encontrado que es estar en los archivos almacenados en caché

$e = new \Doctrine\ORM\Configuration(); 
$e->setEntityNamespaces(array('AcmeStoreBundle' => 'Acme\\StoreBundle\\Entity')); 

¿Cómo puedo añadir esto a matriz?

NUEVO EDIT:

Mi config.yml es el siguiente que debería ayudar a aclarar el tema:

orm: 
    entity_managers: 
     default: 
      connection:  default 
      mappings: 
       AcmeStoreBundle: ~ 
     Foo: 
      connection:  Foo 
      mappings: 
       AcmeFooBundle: ~ 

Gracias de antemano

+0

¿Has resuelto tu problema? –

Respuesta

0

No sabe con certeza lo que quiere decir, manteniendo su las entidades "se separan", pero si intenta mapear una entidad en dos tablas diferentes en la misma base de datos, no creo que eso sea posible, ya que está catalogado como una limitación de doctrina, vea: here.

+3

No, esto no es lo que quise decir, lo que quise decir es que quiero crear mis archivos independientes separados de la base de datos a la que se están conectando, en mi config.yml quería tener 'orm: entity_managers: predeterminado: conexión: por defecto asignaciones: AcmeStoreBundle: ~ Foo: conexión : Foo asignaciones: AcmeAnotherBundle: ~ ' – Matt

1

Tuve este problema exacto al tratar de usar los formularios CRUD generados. Lo que finalmente resolvió el problema estaba añadiendo el nombre del gestor de la entidad preferido como un parámetro para getEntityManager() así:

$em = $this->getDoctrine()->getEntityManager('Foo'); 
0

Sobre el uso de múltiples gestores de entidad:

http://symfony.com/doc/master/cookbook/doctrine/multiple_entity_managers.html

http://symfony.com/doc/master/reference/configuration/doctrine.html#mapping-configuration

Take una mirada al parámetro prefix:

... 

orm: 
    auto_generate_proxy_classes: %kernel.debug% 
    default_entity_manager: default 
    entity_managers: 
     default: 
      connection: default 
      mappings: 
       OneBundle: 
        prefix: One\Bundle\Entity\Namespace 
     other: 
      connection: other # check this :p 
      mappings: 
       OtherBundle: 
        prefix: Other\Bundle\Entity\Namespace 
Cuestiones relacionadas