Symfony 3使用第二个数据库



我尝试在我的symfony3安装中管理2个数据库。我想要有两个连接而不是两个管理器,因为第二个数据库仅用于加载外部数据,而不是与 orm 一起使用。

我的共识

doctrine:
  dbal:
    default_connection: default
    connections:
      default:
          driver:   pdo_mysql
          host:     "%database_host%"
          port:     "%database_port%"
          dbname:   "%database_name%"
          user:     "%database_user%"
          password: "%database_password%"
          charset:  UTF8
      dbsync:
          driver:   pdo_mysql
          host:     "%database_sync_host%"
          port:     "%database_sync_port%"
          dbname:   "%database_sync_name%"
          user:     "%database_sync_user%"
          password: "%database_sync_password%"
          charset:  UTF8
  orm:
    auto_generate_proxy_classes: "%kernel.debug%"
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true

在控制器中,我可以使用我的第二个数据库进行 sql 选择:

...->getManager()->getConnection('dbsync');

但是我想在服务中使用它,但在这种情况下我不知道如何使用getConnection('dbsync')...
我的服务MajUsers.php

<?php
namespace EntBundleService;
use DoctrineORMEntityManager;
use EntBundleEntityUserUser;
class MajUsers {
  private $em;
  /**
   * @param EntityManager $em
   */
  public function __construct(EntityManager $em)
  {
    $this->em = $em;
  }
  public function runUpdate()
  {
     $conn = $this->em->getManager('dbsync')->getConnection('dbsync');
     $personnels_sync =  $conn->fetchAll("SELECT * FROM xxxxx WHERE etat = 1 AND login !='' ORDER BY xxx, yyyyLIMIT 10");
     ..... 
     .....
  }
}

我的服务.yml

ent.maj_users:
    class: EntBundleServiceMajUsers
    arguments:
      - '@doctrine.orm.entity_manager'

我将 em 用于代码中的某个存储库,它工作正常,但 getConnection('dbsync') 部分不起作用。
我想我需要在__construct中注入一个容器(教义? 但我不知道女巫,我所有的测试都失败了:c/

感谢您的任何帮助

更新:

__construct中键入针对DoctrineDBALConnection的提示,并按如下方式定义服务:

ent.maj_users:
    class: EntBundleServiceMajUsers
    arguments:
      - '@doctrine.dbal.dbsync_connection'

感谢@Cerad指出我的错误


老:

您可以在文档中找到它 这里

基本上,您应该像这样定义服务:

ent.maj_users:
    class: EntBundleServiceMajUsers
    arguments:
      - '@doctrine.orm.dbsync_entity_manager'

相关内容

  • 没有找到相关文章

最新更新