Проблемы при использовании нескольких баз данных - PullRequest
0 голосов
/ 20 февраля 2020

Справочная информация: я разрабатываю веб-приложение с Symfony5 для клиента. Приложение должно быть доступно для нескольких клиентов. Каждый клиент должен получить свой собственный каталог файлов (для pdf et c.) И базу данных. Каталог файлов не является проблемой, но я не могу получить что-либо с базами данных. В соответствии с Symfony документом вы можете работать с разными БД. Я настроил это в config / packages / doctrine .yaml.

doctrine:
dbal:
    connections:
        Client1:
            dbname:     client1
            host:       localhost
            port:       3306
            user:       admin
            password:   secret_pw
            driver:     pdo_mysql
            server-version: 5.7
        Client2:
            dbname:     client2
            host:       localhost
            port:       3306
            user:       admin
            password:   secret_pw
            driver:     pdo_mysql
            server-version: 5.7
orm:
    auto_generate_proxy_classes: true
    entity_managers:
        Client1:
            connection: Client1
            naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
            mappings:
                Client1:
                    is_bundle: false
                    type: annotation
                    dir: '%kernel.project_dir%/src/Entity'
                    prefix: 'App\Entity'
                    alias: Client1
        Client2:
            connection: Client2
            naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
            mappings:
                Client2:
                    is_bundle: false
                    type: annotation
                    dir: '%kernel.project_dir%/src/Entity'
                    prefix: 'App\Entity'
                    alias: Client2

Пока это также работает, если я создаю базу данных из CLI и выполняю миграции.

Но если я хочу прочитать, например, пользователя из БД для Client2 (установлен в $ dbClient) с

$userRepo = $this->getDoctrine()
        ->getRepository(User::class, $dbClient);
$user = $userRepo->findOneByeEmail($this->userEmail);

, БД для Client1 ВСЕГДА устанавливается в репозитории: ((.. 1011 *

Я сделал что-то не так в конфиге? Или есть что-то еще, что нужно настроить в другом месте?

Большое спасибо за вашу помощь

Фрэнк

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

Вы вводите неправильный менеджер сущности

$this->getDoctrine()->getManager('Client2')>getRepository(User::class)->findOneByeEmail($this->userEmail);

0 голосов
/ 20 февраля 2020

Оба менеджера сущностей имеют одинаковый префикс в ваших сопоставлениях. Вы должны попробовать что-то вроде

prefix: 'App\Entity\Client1'
//...
prefix: 'App\Entity\Client2'

Это то, что они делают в do c.

...