diff --git a/Command/CreateDatabaseDoctrineCommand.php b/Command/CreateDatabaseDoctrineCommand.php index 6e4fbfe01..cc33dba6c 100644 --- a/Command/CreateDatabaseDoctrineCommand.php +++ b/Command/CreateDatabaseDoctrineCommand.php @@ -53,14 +53,22 @@ protected function execute(InputInterface $input, OutputInterface $output) $ifNotExists = $input->getOption('if-not-exists'); - $params = $connection->getParams(); + $driverOptions = []; + $params = $connection->getParams(); + + if (isset($params['driverOptions'])) { + $driverOptions = $params['driverOptions']; + } + if (isset($params['master'])) { - $params = $params['master']; + $params = $params['master']; + $params['driverOptions'] = $driverOptions; } // Since doctrine/dbal 2.11 master has been replaced by primary if (isset($params['primary'])) { - $params = $params['primary']; + $params = $params['primary']; + $params['driverOptions'] = $driverOptions; } // Cannot inject `shard` option in parent::getDoctrineConnection diff --git a/Command/DropDatabaseDoctrineCommand.php b/Command/DropDatabaseDoctrineCommand.php index b9f29566d..a997ab0fd 100644 --- a/Command/DropDatabaseDoctrineCommand.php +++ b/Command/DropDatabaseDoctrineCommand.php @@ -62,14 +62,22 @@ protected function execute(InputInterface $input, OutputInterface $output) $ifExists = $input->getOption('if-exists'); - $params = $connection->getParams(); + $driverOptions = []; + $params = $connection->getParams(); + + if (isset($params['driverOptions'])) { + $driverOptions = $params['driverOptions']; + } + if (isset($params['master'])) { - $params = $params['master']; + $params = $params['master']; + $params['driverOptions'] = $driverOptions; } // Since doctrine/dbal 2.11 master has been replaced by primary if (isset($params['primary'])) { - $params = $params['primary']; + $params = $params['primary']; + $params['driverOptions'] = $driverOptions; } if (isset($params['shards'])) { diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php index 163caddd6..07afe8f6a 100644 --- a/DependencyInjection/DoctrineExtension.php +++ b/DependencyInjection/DoctrineExtension.php @@ -265,6 +265,7 @@ protected function getConnectionOptions($connection) if (! empty($options['slaves']) || ! empty($options['replica'])) { $nonRewrittenKeys = [ 'driver' => true, + 'driverOptions' => true, 'driverClass' => true, 'wrapperClass' => true, 'keepSlave' => true, diff --git a/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php b/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php index 3eb7ccfbc..626e9035a 100644 --- a/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php +++ b/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php @@ -135,7 +135,6 @@ class_exists(PrimaryReadReplicaConnection::class) ? 'dbname' => 'mysql_db', 'host' => 'localhost', 'unix_socket' => '/path/to/mysqld.sock', - 'driverOptions' => [], ], $param['primary'] ?? $param['master'] // TODO: Remove 'master' support here when we require dbal >= 2.11 );