symfony 4.2 загрузить сервис доктрины в класс обертки соединения - PullRequest
2 голосов
/ 13 апреля 2019

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

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

Привет

doctrine:
    dbal:
        default_connection: db_name
        connections:
            my_connection:
                wrapper_class: App\Doctrine\DynamicConnection
                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.

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

    doctrine.entity_manager:
        public: true
        class: App\Doctrine\DynamicConnection
        arguments: [ '@doctrine.orm.entity_manager' ]
namespace App\Doctrine;

use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Driver;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\DependencyInjection\ContainerBuilder;


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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...