#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');