【问题标题】:Change database (em) with selector in Symfony 2 using multiple entity managers使用多个实体管理器在 Symfony 2 中使用选择器更改数据库(em)
【发布时间】:2014-03-26 11:51:49
【问题描述】:

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

就我而言,我想使用两个数据库 db2014 和 db2015,它们可以允许通过选择(组合框)进行更改,然后更改默认实体管理器。使用此配置:

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');

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

提前致谢!

【问题讨论】:

  • 我也有同样的问题。你找到解决问题的答案了吗?谢谢回答
  • 不!对不起。我用的是 symfony 2.3,看来 2.7 版本是可以的。
  • 我还有一个问题。您能否告诉我 Symfony 2.7 中此功能的名称,或者如果您知道如何找到它?非常感谢。

标签: symfony doctrine-orm


【解决方案1】:

您还必须更改 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: ~

【讨论】:

  • 谢谢,是的,我知道我的 config.yml 不完整,但主要是我的问题是我是否可以将 em 设置为默认值,我不需要更改控制器中的代码,总是这样:$ em = $this->get('doctrine')->getManager();你明白我的意思吗?
猜你喜欢
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 2014-01-28
  • 2021-08-02
  • 2018-02-01
  • 2013-03-12
相关资源
最近更新 更多