Doctrine2 + Symfony2: Как я могу хранить сущности и сопоставления в отдельных пакетах? - PullRequest
3 голосов
/ 17 ноября 2011

Я хочу отделить свое приложение, чтобы я мог использовать свои сущности в любом месте, независимо от их источника данных.

Итак, я поместил свои сущности в

DataAccessLayerBundle \ Entity

и сопоставления в

DataProvider \ DataBaseBundle \ Resources \ config \ doctrine

Проблема:

Когда я пытаюсь выполнить следующую команду:

php app \ console доктрина: схема: создать

для построения моей базы данных, я получаю следующую ошибку:

Предупреждение: class_parents (): Class (..) \ DataProvider \ DatabaseBundle \ Entity \ BaseEntity не существует и не может быть загружен в (...) \ vendor \ doctrine \ lib \ D octrine \ ORM \Строка Mapping \ ClassMetadataFactory.php 223

Вопрос: почему, черт возьми, он пытается искать классы в пространстве имен DataProvider \ DatabaseBundle \ Entity , когда я явно его определилиначе в файлах сопоставления?Пример фрагмента файла сопоставления:

<mapped-superclass name="(...)\DataAccessLayerBundle\Entity\Base\BaseEntity">

Я заметил, что symfony / doctrine просто ищет эти классы на основе имен файлов xml (например, BaseEntity.orm.xml) и текущего пространства имен пакета.

Есть ли способ, которым я могу отделить вещи, как я хотел, или я застрял с определением сущностей и их отображением в одном комплекте?

1 Ответ

4 голосов
/ 23 ноября 2011

Как выяснилось из документов, возможно иметь сущности и отображения в отдельных пакетах. Для этого вам нужно настроить доктрину в основной конфигурации, как показано в следующем примере:

orm:
    auto_generate_proxy_classes: %kernel.debug%
    ...
    entity_managers:
      default:
        mappings:
          (...)DataAccessLayerBundle:
            type: xml
            dir: ../DataProvider/DatabaseBundle/Resources/config/doctrine

Мне все еще пришлось переместить мой класс BaseEntity из Entity \ Base в папку Entity, чтобы это работало, но это небольшая жертва по сравнению с полученной гибкостью.

Ссылка на конфигурацию: http://symfony.com/doc/2.0/reference/configuration/doctrine.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...