使用多个实体管理器在Symfony 2中使用选择器更改数据库(em)

时间:2014-03-26 11:51:50

标签: symfony doctrine-orm

我想知道如何在symfony 2中的应用程序中使用两个数据库连接(实体管理器),并且我已经阅读了如何使用多个实体管理器(http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html)。

在我的情况下,我想使用两个数据库db2014和db2015,它们可以允许使用select(组合框)进行更改,然后更改默认实体管理器。使用此配置:

doctrine:
    dbal:
        default_connection: default
        connections:
            //connection for db2014
            default:
                driver:   "%database_driver%"
                host:     "%database_host%"
                port:     "%database_port%"
                dbname:   "%database_name%"
                user:     "%database_user%"
                password: "%database_password%"
                charset:  UTF8

            //connection for db2015
            db2015:
                driver:   "%database_driver2%"
                host:     "%database_host2%"
                port:     "%database_port2%"
                dbname:   "%database_name2%"
                user:     "%database_user2%"
                password: "%database_password2%"
                charset:  UTF8

我理解了这篇文章,但主要的问题是我必须更改代码控制器以选择像这样的实体管理器:

// All three return the "default/db2014" entity manager
$em = $this->get('doctrine')->getManager();

// Both of these return the "db2015" entity manager
$db2015Em = $this->get('doctrine')->getManager('db2015');

我可以将默认实体管理器设置为不更改控制器代码吗?或者我可以如何实现它?我希望能够解释清楚,因为我的英语不是很好。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您必须在config.yml中更改Doctrine ORM部分,如Symfony Cookbook

中所述
doctrine:
    dbal:
        [...]
    orm:
        default_entity_manager: db2015
        entity_managers:
            db2015:
                connection: db2015
                mappings:
                    AcmeDemoBundle:  ~
                    AcmeStoreBundle: ~
            db2014:
                connection: db2014
                mappings:
                    AcmeCustomerBundle: ~