diff --git a/Command/Proxy/RunSqlDoctrineCommand.php b/Command/Proxy/RunSqlDoctrineCommand.php index d784fcbdb..9dab535e2 100644 --- a/Command/Proxy/RunSqlDoctrineCommand.php +++ b/Command/Proxy/RunSqlDoctrineCommand.php @@ -9,6 +9,8 @@ /** * Execute a SQL query and output the results. + * + * @deprecated use Doctrine\DBAL\Tools\Console\Command\RunSqlCommand instead */ class RunSqlDoctrineCommand extends RunSqlCommand { @@ -41,6 +43,8 @@ protected function configure() */ protected function execute(InputInterface $input, OutputInterface $output) { + @trigger_error(sprintf('The "%s" (doctrine:query:sql) is deprecated, use dbal:run-sql command instead.', self::class), E_USER_DEPRECATED); + DoctrineCommandHelper::setApplicationConnection($this->getApplication(), $input->getOption('connection')); // compatibility with doctrine/dbal 2.11+ diff --git a/Dbal/ManagerRegistryAwareConnectionProvider.php b/Dbal/ManagerRegistryAwareConnectionProvider.php new file mode 100644 index 000000000..9ef8969df --- /dev/null +++ b/Dbal/ManagerRegistryAwareConnectionProvider.php @@ -0,0 +1,28 @@ +managerRegistry = $managerRegistry; + } + + public function getDefaultConnection() : Connection + { + return $this->managerRegistry->getConnection(); + } + + public function getConnection(string $name) : Connection + { + return $this->managerRegistry->getConnection($name); + } +} diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php index 1c267114c..a98fea567 100644 --- a/DependencyInjection/DoctrineExtension.php +++ b/DependencyInjection/DoctrineExtension.php @@ -2,10 +2,12 @@ namespace Doctrine\Bundle\DoctrineBundle\DependencyInjection; +use Doctrine\Bundle\DoctrineBundle\Dbal\ManagerRegistryAwareConnectionProvider; use Doctrine\Bundle\DoctrineBundle\Dbal\RegexSchemaAssetFilter; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\ServiceRepositoryCompilerPass; use Doctrine\Bundle\DoctrineBundle\EventSubscriber\EventSubscriberInterface; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepositoryInterface; +use Doctrine\DBAL\Tools\Console\ConnectionProvider; use Doctrine\ORM\Proxy\Autoloader; use Doctrine\ORM\UnitOfWork; use LogicException; @@ -197,12 +199,20 @@ protected function loadDbalConnection($name, array $connection, ContainerBuilder } // Create a shard_manager for this connection - if (! isset($options['shards'])) { + if (isset($options['shards'])) { + $shardManagerDefinition = new Definition($options['shardManagerClass'], [new Reference(sprintf('doctrine.dbal.%s_connection', $name))]); + $container->setDefinition(sprintf('doctrine.dbal.%s_shard_manager', $name), $shardManagerDefinition); + } + + // dbal < 2.11 BC layer + if (! class_exists(ConnectionProvider::class)) { return; } - $shardManagerDefinition = new Definition($options['shardManagerClass'], [new Reference(sprintf('doctrine.dbal.%s_connection', $name))]); - $container->setDefinition(sprintf('doctrine.dbal.%s_shard_manager', $name), $shardManagerDefinition); + $container->setDefinition( + ManagerRegistryAwareConnectionProvider::class, + new Definition(ManagerRegistryAwareConnectionProvider::class, $container->getDefinition('doctrine')) + ); } protected function getConnectionOptions($connection) diff --git a/Resources/config/dbal.xml b/Resources/config/dbal.xml index cb4ae293c..25a4cc656 100644 --- a/Resources/config/dbal.xml +++ b/Resources/config/dbal.xml @@ -102,5 +102,11 @@ + + + + + + diff --git a/UPGRADE-2.2.md b/UPGRADE-2.2.md new file mode 100644 index 000000000..ba928d49a --- /dev/null +++ b/UPGRADE-2.2.md @@ -0,0 +1,7 @@ +UPGRADE FROM 2.1 to 2.2 +======================= + +Commands +-------- + + * `doctrine:query:sql` command has been deprecated. Use `dbal:run-sql` command instead.