Symfony 2: Добавьте другое пространство имен в пространства имен Entity - PullRequest
6 голосов
/ 19 декабря 2011

В моем приложении symfony2 у меня есть два соединения с базой данных, я бы хотел, чтобы классы сущностей были отделены друг от друга, и поэтому я должен иметь один набор классов сущностей в одном пакете и другой набор в другом пакете.Однако при попытке вызвать мой пакет, который по какой-то причине не зарегистрирован как пространство имен сущности, ошибка выглядит следующим образом:

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

Я искал, где он устанавливает пространства имен сущности, и я нашелэто должно быть в кэшированных файлах

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

Как я могу добавить это в массив?

НОВОЕ РЕДАКТИРОВАНИЕ:

Мой config.ymlследующим образом, который должен помочь прояснить проблему:

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

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 18 апреля 2012

У меня была именно эта проблема при попытке использовать сгенерированные формы CRUD.В конечном итоге проблема была решена путем добавления имени предпочтительного менеджера сущностей в качестве параметра к getEntityManager(), например:

$em = $this->getDoctrine()->getEntityManager('Foo');
0 голосов
/ 02 октября 2012

При использовании нескольких менеджеров сущностей:

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

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

Посмотрите на параметр 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
0 голосов
/ 20 декабря 2011

Не совсем уверен, что вы имеете в виду, говоря, что ваши сущности «разделены», но если вы пытаетесь отобразить одну сущность на две разные таблицы в одной и той же базе данных, я не думаю, что это возможно, поскольку это перечислено как ограничение доктрины: здесь .

...