加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Doctrine 2 – 多数据库配置和使用

发布时间:2020-12-13 14:03:45 所属栏目:PHP教程 来源:网络整理
导读:我有一个具有 MySQL数据库的Symfony2项目: #app/config/config.ymldoctrine: dbal: driver: %database_driver% # host: %database_host% # | port: %database_port% # | Defined in dbname: %database_name% # | parameters.ini user: %database_user% # |
我有一个具有 MySQL数据库的Symfony2项目:
#app/config/config.yml
doctrine:
    dbal:
        driver:   %database_driver%    # <
        host:     %database_host%      # |
        port:     %database_port%      # | Defined in
        dbname:   %database_name%      # | parameters.ini
        user:     %database_user%      # |
        password: %database_password%  # <

    orm:
        auto_generate_proxy_classes: %kernel.debug%
        auto_mapping: true

现在我想对其他数据库进行简单的查询(例如例程调用).

我应该在配置文件中定义一个其他dbal吗?
如果是,在保留项目的默认连接的情况下如何配置?
我必须为每个连接配置一个orm吗?

您需要添加另一个级别的配置,并且还使用 multiple entity managers,因为Doctrine每个数据库连接使用1个实体管理器.您的配置可能如下所示:
doctrine:
    dbal:
      connections:
        default:
          driver:   %database_driver%    # <
          host:     %database_host%      # |
          port:     %database_port%      # | Defined in
          dbname:   %database_name%      # | parameters.ini
          user:     %database_user%      # |
          password: %database_password%  # <
        another:
          driver:   %database2_driver%    # <
          host:     %database2_host%      # |
          port:     %database2_port%      # | Defined in
          dbname:   %database2_name%      # | parameters.ini
          user:     %database2_user%      # |
          password: %database2_password%  # <

然后,您定义多个实体管理器

doctrine:
    orm:
        default_entity_manager:   default
        entity_managers:
            default:
                connection:       default
                mappings:
                    AcmeDemoBundle: ~
                    AcmeStoreBundle: ~
            another:
                connection:       another
                mappings:
                    AcmeCustomerBundle: ~

那么在您的操作中,您可以使用以下内容来获取正确的实体管理器:

$em = $this->get('doctrine')->getEntityManager('default');
$em = $this->get('doctrine')->getEntityManager('another');

取决于您所需的实体经理

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读