Symfony 2:向Entity名称空间添加另一个名称空间

时间:2011-12-19 17:11:43

标签: symfony doctrine-orm

在我的symfony2应用程序中,我有两个数据库连接,我想保持实体类是单独的,因此在一个包中有一组实体类,在另一个包中有另一组。但是,在尝试调用我的bundle时,由于某种原因未将其注册为Entity Namespace,错误如下:

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 个答案:

答案 0 :(得分:1)

尝试使用生成的CRUD表单时遇到了这个问题。最终解决了问题的是将首选实体管理器的名称作为参数添加到getEntityManager(),如下所示:

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

答案 1 :(得分:0)

通过保持您的实体“分离”并不完全确定您的意思,但如果您尝试将一个实体映射到同一数据库中的两个不同的表,我认为这不可能,因为它列为学说限制,请参阅: here

答案 2 :(得分:0)

使用多个实体经理:

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