symfony 4.2 загружает службу доктрины в класс-оболочку соединения

#symfony #containers #symfony4

#symfony #контейнеры #symfony4

Вопрос:

я новичок в symfony и создал некоторый проект на основе 4.2, поскольку мне нужно динамически переключать БД, и, похоже, в этой версии есть ошибка, я выполнил некоторые инструкции по настройке класса-оболочки для подключения к БД, это работает нормально. Но я изо всех сил пытаюсь заставить метод doctrince getConnections() работать здесь, чтобы иметь возможность дважды проверять отправленный параметр в соответствии с моей конфигурацией БД. Все, что я пробовал, инициализируя доктрину как контейнер службы и т. Д., Не работает.

Надеюсь, кто-нибудь может дать мне подсказку, а также мой первый пост, поэтому, пожалуйста, без ненависти (:

Приветствую

 doctrine:
    dbal:
        default_connection: db_name
        connections:
            my_connection:
                wrapper_class: AppDoctrineDynamicConnection
                url: '%env(DATABASE_URL)%'
                driver: 'pdo_mysql'
                server_version: '5.7'
                charset: utf8mb4
 
 services:
    # default configuration for services in *this* file
    _defaults:
        public: false
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

    AppDoctrine:
        resource: '../src/Doctrine'
        tags: ['doctrine.service_arguments']

    doctrine.entity_manager:
        public: true
        class: AppDoctrineDynamicConnection
        arguments: [ '@doctrine.orm.entity_manager' ]
 
 namespace AppDoctrine;

use DoctrineDBALConnection;
use DoctrineDBALDriver;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentDependencyInjectionContainerBuilder;


class DynamicConnection extends Connection
{

    public function __construct(array $params = array(), Driver $driver = null, $config = null, $eventManager = null)
    {
        #$request = Request::createFromGlobals();
        #$dbname = $request->query->get('db_name');

        $containerBuilder = new ContainerBuilder();

        var_dump($containerBuilder->getServiceIds());

        $doctrine = $containerBuilder->get('doctrine.entity_manager');