0

我正在尝试设置我的 symfony 以使用两个数据库连接。问题是 Symfony 不会将实体映射到正确的 EntityManager。所以执行一个查询,我必须告诉 Symfony 它应该使用哪个管理器。

我的配置:

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

相反,我希望我可以省略第二个参数。这样,我的捆绑包将是独立的。项目经理可以决定他将在他的项目中实现什么数据库配置。他只需要确保映射是正确的。

这是如何运作的?如果这是不可能的,那么映射用于什么?

4

1 回答 1

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-多实体.html

于 2013-01-21T13:28:55.540 回答