2014-03-26 22 views
0

我想知道如何在我的應用程序中的symfony 2使用兩個數據庫連接(實體管理器)和我已閱讀如何與多個實體管理工作(http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html) 。更改數據庫(EM)與選擇中的Symfony 2使用多個實體管理

在我來說,我想用兩個數據庫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'); 

我可以設置默認實體管理器不要更改控制器代碼?或一些想法,我怎麼能實現它?我希望能解釋得很好,因爲我的英語不太好。

在此先感謝!

+0

我有同樣的問題進行說明。你找到解決問題的答案嗎? 謝謝回答 – user1336101

+0

不!抱歉。我使用的是symfony 2.3,它似乎可以在2.7版本中使用。 – Freenando

+0

我還有一個問題。你能告訴我在Symfony 2.7中這個特性的名字嗎?或者如果你知道它的話可以找到它的名字嗎?非常感謝你。 – user1336101

回答

0

你將不得不更改學說ORM的部分在config.yml爲好,如Symfony Cookbook

doctrine: 
    dbal: 
     [...] 
    orm: 
     default_entity_manager: db2015 
     entity_managers: 
      db2015: 
       connection: db2015 
       mappings: 
        AcmeDemoBundle: ~ 
        AcmeStoreBundle: ~ 
      db2014: 
       connection: db2014 
       mappings: 
        AcmeCustomerBundle: ~ 
+0

謝謝,是的,我知道我的config.yml是不完整的,但主要是我的問題是,如果我可以設置EM爲默認我沒有需要改變我的代碼在控制器使用總是這樣的:$ em = $ this-> get('doctrine') - > getManager();你明白我的觀點是什麼? – Freenando