2013-01-21 62 views
0

我試圖設置我的symfony使用兩個數據庫連接。問題是Symfony不會將實體映射到正確的EntityManager。所以執行一個查詢,我必須告訴Symfony它應該使用哪個管理器。在Doctrine中映射多個數據庫

我的配置:

# Doctrine Configuration 
doctrine: 
    dbal: 
    default_connection: default 
     connections: 
     default: 
      driver: "%database_driver%" 
      host:  "%database_host%" 
      port:  "%database_port%" 
      dbname: "%database_name%" 
      user:  "%database_user%" 
      password: "%database_password%" 
      charset: UTF8 

     lookup: 
      driver: "%database_driver%" 
      host:  "%database_host%" 
      port:  "%database_port%" 
      dbname: "Lookup" 
      user:  "%database_user%" 
      password: "%database_password%" 
      charset: UTF8 

    orm: 
    auto_generate_proxy_classes: "%kernel.debug%" 

    default_entity_manager: default 
    entity_managers: 
     default: 
     connection: default 
      mappings: 
      MbMyAppBundle: ~ 

     mvibes: 
     mappings: 
      MbLookupBundle: ~ 
     connection: mvibes 

所以,從我查找查詢,我所要做的:$this->getDoctrine()->getRepository('MbLookupBundle:Country', 'lookup');

相反,我希望我可以離開了第二個參數。這樣,我的捆綁將是獨立的。項目經理可以決定他將在他的項目中執行的數據庫配置。他只需確保映射是正確的。

這是如何工作的?如果這是不可能的,那麼用於什麼映射?

+1

開始通過重命名你的第二個連接「mvibes」而不是「查找」 – AlterPHP

+0

對不起,是的,我編輯了一下我的配置,使我的配置更具通用性。我有一個「mvibes」連接。 – rolandow

+0

編輯您的問題,使其更具可讀性,並幫助我們幫助您;) – AlterPHP

回答

1

您在連接命名錯誤:

# Doctrine Configuration 
doctrine: 
    dbal: 
    default_connection: default 
     connections: 
     default: 
      # ... 

     mvibes: #This is the name of the connection 
      # ... 

    orm: 
    auto_generate_proxy_classes: "%kernel.debug%" 

    default_entity_manager: default 
    entity_managers: 
     default: 
     connection: default 
     mappings: 
      MbMyAppBundle: ~ 

     mvibes: 
     mappings: 
      MbLookupBundle: ~ 
     connection: mvibes #must refre to a connection's name defined above 

官方文檔:http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html 博客文章我寫它:http://blog.alterphp.com/2011/10/configuration-trick-for-multiple-entity.html