【问题标题】:Symfony 4 one entity, two entity ManagerSymfony 4 一实体,二实体管理器
【发布时间】:2018-02-28 03:22:35
【问题描述】:

大家好,我正在尝试为 Symfony4 中的一个实体设置 2 个 entityManager,但我在执行此操作时遇到了一些麻烦。

当我持久化一个实体时,它可以工作,(例如,如果有两个实体管理器:客户和默认值,当我使用客户或默认值来持久化时)但是当我想使用存储库时,学说中的第一个实体 Managare始终使用 .yaml。 我必须这样做,因为我有 2 个数据库。例如,当用户单击一个按钮时,我创建并搜索的一个在 Internet 中,一个在我的 Intranet 中。它更新互联网上的数据库。

config/packages/doctrine.yaml

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                driver: pdo_mysql
                host: **************
                port: 3306
                dbname: intranetDb
                user: **********
                password: *****
                charset: UTF8

            customer:
                driver: pdo_mysql
                host: internetDb
                port: 3306
                dbname: *********
                user:   *********
                password: *********
                charset: UTF8




    orm:
        default_entity_manager: default
        entity_managers:
            default:
                connection: default
                auto_mapping: false
                mappings:
                    Main:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity'
                        prefix: 'App\Entity'
                        alias: Main
            customer:
                connection: customer
                auto_mapping: false
                mappings:
                    Customer:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity'
                        prefix: 'App\Entity'
                        alias: Main

MyController.php

..
$drug = $this->getDoctrine()->getRepository(Drug::class,'customer')->findAll() ; 
..

这段代码总是给我default里面的数据,如果我把customer放在orm里面,customer总是给出。

欢迎一些帮助,因为我这几天遇到了这个问题,我没有解决这个问题的想法(可能是因为我在论坛中没有找到解决方案的 symfony 版本)。

谢谢。(对不起我的英语不好)

【问题讨论】:

    标签: repository entity entitymanager symfony4


    【解决方案1】:

    您可以从实体管理器获取存储库,而不是从getDoctrine() 返回的ManagerRegistry 获取它。

    例子:

    [...]
    
    $this->getDoctrine()->getManager('manager_name')->getRepository('class_name');
    
    [...]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 2013-12-13
      • 2015-10-30
      相关资源
      最近更新 更多