首页 > 解决方案 > Symfony3:在服务中注入几个@doctrine.orm.entity_manager

问题描述

我与几个连接一起工作

这是我的 config.yml :

doctrine:
    dbal:
        default_connection: connexion_1# specify the connexion used by default
        connections:
            connexion_1:
                driver:   "%database_driver1%"  
                 ....
            connexion_2:
                driver:    "%database_driver2%" 
                 ...

我想在服务中注入 2 个连接实体管理器。

在我的 service.yml 中,我可以只注入一个名为 "@doctrine.orm.entity_manager" 的 entity_manager。这是默认管理器

@doctrine.orm.entity_manager argument
    zip_command:
        class: BackEndBundle\Command\ZipCommand
        arguments:
            - '@doctrine.orm.entity_manager'
        tags:
            -  { name: console.command }         

如何注入其他连接?

标签: symfony

解决方案


选项1

根据文档,您应该能够通过doctrine.orm.{entity_manager_name_here}_entity_manager别名注入您的自定义实体管理器。doctrine.orm.entity_managers您可以在 config.yml中找到您的实体经理的名称。

选项 2

如果您想访问服务中的所有实体管理器,您可以Doctrine\Common\Persistence\ManagerRegistry直接注入并使用getManager(s)方法。


推荐阅读