2011-12-19 14 views
5

W mojej aplikacji symfony2 mam dwa połączenia z bazą danych, chciałbym zachować oddzielne klasy encji i dlatego mam jeden zestaw klas jednostek w jednym pakiecie i inny zestaw w innym pakiecie . Jednak podczas próby wywołania moją paczkę, jej z jakiegoś powodu nie zarejestrowany jako przestrzeni nazw Entity, błąd jest w następujący sposób:Symfony 2: Dodaj inny obszar nazw do przestrzeni nazw jednostki

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

Szukałem gdzie ustawia nazw encji, a ja znalazłem go być w zbuforowanych plikach

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

Jak mogę dodać to do tablicy?

NOWA EDYCJA:

Moja config.yml jest następujący które powinny pomóc wyjaśnić kwestię:

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

z góry dzięki

+0

Rozwiązałeś swój problem? –

Odpowiedz

0

Nie do końca pewien co masz na myśli poprzez utrzymywanie encje są "oddzielne", ale jeśli próbujesz odwzorować jedną jednostkę na dwie różne tabele w tej samej bazie danych, nie sądzę, że jest to możliwe, ponieważ jest ona wymieniona jako ograniczenie doktryny, patrz: here.

+3

Nie chodzi o to, co miałem na myśli, chodzi mi o to, że chcę utworzyć pliki encji oddzielne zależne od bazy danych, z którą się łączą, w moim config.yml chciałem mieć 'orm: entity_managers: domyślnie: gra: domyślnie mapowania: AcmeStoreBundle: ~ Foo: połączenia: Foo mapowania: AcmeAnotherBundle: ~ ' – Matt

1

Miałem ten problem podczas próby użycia wygenerowanych formularzy CRUD. Co ostatecznie rozwiązany problem został dodając nazwę preferowanego kierownika jednostki jako parametr do getEntityManager() tak:

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

Z pomocą wielu menedżerów jednostki:

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

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

Take parametr 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 
Powiązane problemy