2014-10-10 3 views
1

Я пытаюсь использовать Doctrine в Symfony 2.5 с конфигурацией XML для сопоставления сущности.Doctrine2 + Symfony2: Как использовать объекты Doctrine с именами с Symfony2?

У меня есть класс Namespaced Bar: ACME\TestBundle\Entity\Foo\Bar

Поскольку у меня есть много сущностей они не могут постоянно находятся в ACME\TestBundle\Entity пространства имен, но они должны быть введен в суб-пространства имен.

Создание объектов не проблема, но я не могу понять, куда помещать файлы конфигурации ORM XML.

Resources/config/doctrine/Foo/Bar.orm.xml Я попытался, который не находит файл отображения:

$ php app/console doctrine:schema:create --dump-sql 
No Metadata Classes to process. 

Я попытался Resources/config/doctrine/Bar.orm.xml, которая игнорирует дополнительные Foo пространства имен Унтер Entity, хотя полное пространство имен правильно дается в Bar.orm.xml в name элементе ,

$ php app/console doctrine:schema:create --dump-sql     
[Doctrine\Common\Persistence\Mapping\MappingException] 
Class 'ACME\TestBundle\Entity\Bar' does not exist 

Что мне недостает? Каково правильное место для файла сопоставления XML для этих классов с именами?

Заранее за вашу помощь.

+1

Попробуйте использовать 'Foo.Bar.orm.xml'. –

+0

@ пользователь3749178 правильный. Файл сопоставления файлов находится в разделе Ресурсы/config/doctrine. Это своего рода двухстороннее отображение. Несмотря на то, что файл сопоставления содержит полное имя сущности, система должна иметь возможность находить файл сопоставления на основе имени сущности. Не знаете, где это задокументировано. Я подумал об этом некоторое время назад, посмотрев на сообщения об ошибках. Можно использовать и другие каталоги сопоставлений, но это больно. http://symfony.com/doc/current/reference/configuration/doctrine.html#mapping-configuration – Cerad

ответ

1

Использование @ user3749178 предложения Foo.Bar.orm.xml работает и является самым простым способом решения проблемы, хотя все файлы сопоставления попадают в один каталог.

Также можно иметь отдельные каталоги для всего основаны на:

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

Ниже приведен пример конфигурации:

doctrine: 

    orm: 
    default_entity_manager:  default 
    auto_generate_proxy_classes: %kernel.debug% 

    entity_managers: 

    default: 
     connection: default 
     mappings: 
     foo1: 
      prefix: Cerad\Bundle\ProjectGameBundle\Doctrine\Entity\Foo1 
      type: yml 
      dir: src/ProjectGameBundle/Doctrine/EntityMapping/Foo1 
      is_bundle: false 
     foo2: 
      prefix: Cerad\Bundle\ProjectGameBundle\Doctrine\Entity\Foo2 
      type: yml 
      dir: src/ProjectGameBundle/Doctrine/EntityMapping/Foo2 
      is_bundle: false 

Вы в основном указать одно отображение для каждого каталога, содержащего объекты.

Смежные вопросы