Я новичок в 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');