Symfony 4 один объект, два менеджера объектов

Привет всем, я пытаюсь создать 2 entityManager для одного объекта в Symfony4, но у меня есть некоторые проблемы с этим.

Когда я сохраняю сущность, она работает (например, если у меня есть две сущности Mananagers: Customer и Default, когда я использую Customer или Default для сохранения), но когда я хочу использовать Repository, первая сущность Managare в doctrine.yaml< /strong> используется всегда. Я должен сделать это, потому что у меня есть 2 базы данных. Один в Интернете и один в моей интрасети, которую я создал, и я ищу, чтобы сделать это, например, когда пользователь нажимает одну кнопку. Он обновляет базу данных в Интернете.

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 я не нашел решения на форуме).

Спасибо. (И извините за мой плохой английский)


person Mendrika RALISON    schedule 28.02.2018    source источник


Ответы (1)


Вы можете получить репозиторий от диспетчера сущностей, а не от ManagerRegistry, возвращенного getDoctrine().

Пример:

[...]

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

[...]
person Barthy    schedule 17.07.2018