diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 9f949bde..1bff5c3d 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -12,4 +12,4 @@ on: jobs: coding-standards: name: "Coding Standards" - uses: "doctrine/.github/.github/workflows/coding-standards.yml@7.1.0" + uses: "doctrine/.github/.github/workflows/coding-standards.yml@7.2.2" diff --git a/.github/workflows/composer-lint.yml b/.github/workflows/composer-lint.yml index 638a1418..a7ad8848 100644 --- a/.github/workflows/composer-lint.yml +++ b/.github/workflows/composer-lint.yml @@ -17,4 +17,4 @@ on: jobs: composer-lint: name: "Composer Lint" - uses: "doctrine/.github/.github/workflows/composer-lint.yml@7.1.0" + uses: "doctrine/.github/.github/workflows/composer-lint.yml@7.2.2" diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index ee8c38b5..f75bab45 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -12,7 +12,7 @@ on: jobs: phpunit: name: "PHPUnit" - uses: "doctrine/.github/.github/workflows/continuous-integration.yml@7.1.0" + uses: "doctrine/.github/.github/workflows/continuous-integration.yml@7.2.2" with: php-versions: '["7.2", "7.3", "7.4", "8.0", "8.1", "8.2", "8.3", "8.4"]' secrets: @@ -20,7 +20,7 @@ jobs: phpunit-with-dev-deps: name: "PHPUnit with dev dependencies" - uses: "doctrine/.github/.github/workflows/continuous-integration-symfony-unstable.yml@7.1.0" + uses: "doctrine/.github/.github/workflows/continuous-integration-symfony-unstable.yml@7.2.2" with: symfony-version-constraint: "^7" secrets: diff --git a/.github/workflows/release-on-milestone-closed.yml b/.github/workflows/release-on-milestone-closed.yml index 0c4ee4a5..c0bfaa86 100644 --- a/.github/workflows/release-on-milestone-closed.yml +++ b/.github/workflows/release-on-milestone-closed.yml @@ -8,7 +8,7 @@ on: jobs: release: name: "Git tag, release & create merge-up PR" - uses: "doctrine/.github/.github/workflows/release-on-milestone-closed.yml@7.1.0" + uses: "doctrine/.github/.github/workflows/release-on-milestone-closed.yml@7.2.2" secrets: GIT_AUTHOR_EMAIL: ${{ secrets.GIT_AUTHOR_EMAIL }} GIT_AUTHOR_NAME: ${{ secrets.GIT_AUTHOR_NAME }} diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index d1e53833..809fb334 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -12,4 +12,4 @@ on: jobs: static-analysis: name: "Static Analysis" - uses: "doctrine/.github/.github/workflows/phpstan.yml@7.1.0" + uses: "doctrine/.github/.github/workflows/phpstan.yml@7.2.2" diff --git a/composer.json b/composer.json index ee7c51fd..11786bdc 100644 --- a/composer.json +++ b/composer.json @@ -34,7 +34,6 @@ "composer/semver": "^3.0", "doctrine/coding-standard": "^12", "doctrine/orm": "^2.6 || ^3", - "doctrine/persistence": "^2.0 || ^3", "phpstan/phpstan": "^1.4 || ^2", "phpstan/phpstan-deprecation-rules": "^1 || ^2", "phpstan/phpstan-phpunit": "^1 || ^2", diff --git a/config/services.xml b/config/services.xml index a96aa098..53ded478 100644 --- a/config/services.xml +++ b/config/services.xml @@ -148,7 +148,7 @@ - + diff --git a/src/DependencyInjection/DoctrineMigrationsExtension.php b/src/DependencyInjection/DoctrineMigrationsExtension.php index 5e6645f2..85a85a76 100644 --- a/src/DependencyInjection/DoctrineMigrationsExtension.php +++ b/src/DependencyInjection/DoctrineMigrationsExtension.php @@ -124,6 +124,15 @@ public function load(array $configs, ContainerBuilder $container): void } $configurationDefinition->addMethodCall('setMetadataStorageConfiguration', [new Reference('doctrine.migrations.storage.table_storage')]); + + // Add tag to the filter for each Doctrine connection, so the table is ignored for multiple connections + if ($container->hasParameter('doctrine.connections')) { + /** @var array $connections */ + $connections = $container->getParameter('doctrine.connections'); + foreach (array_keys($connections) as $connection) { + $filterDefinition->addTag('doctrine.dbal.schema_filter', ['connection' => $connection]); + } + } } if ($config['em'] !== null && $config['connection'] !== null) { diff --git a/tests/DependencyInjection/DoctrineMigrationsExtensionTest.php b/tests/DependencyInjection/DoctrineMigrationsExtensionTest.php index 7fba5b1f..b690516e 100644 --- a/tests/DependencyInjection/DoctrineMigrationsExtensionTest.php +++ b/tests/DependencyInjection/DoctrineMigrationsExtensionTest.php @@ -279,6 +279,10 @@ public function testCustomConnection(): void $di = $container->get('doctrine.migrations.dependency_factory'); self::assertInstanceOf(DependencyFactory::class, $di); self::assertSame($doctrine->getConnection('custom'), $di->getConnection()); + // Check if the multiple connections also added the required tags to the filter + $filterDefinition = $container->findDefinition('doctrine_migrations.schema_filter_listener'); + $tags = $filterDefinition->getTag('doctrine.dbal.schema_filter'); + self::assertCount(2, $tags); } public function testPrefersEntityManagerOverConnection(): void @@ -466,9 +470,6 @@ private function getContainer(array $config, ?array $dbalConfig = null, ?array $ $bundle = new DoctrineMigrationsBundle(); $bundle->build($container); - $extension = new DoctrineMigrationsExtension(); - $extension->load(['doctrine_migrations' => $config], $container); - $extension = new DoctrineExtension(); $doctrineBundleConfigs = $dbalConfig === null ? ['dbal' => ['url' => 'sqlite:///:memory:']] : ['dbal' => $dbalConfig]; @@ -478,8 +479,15 @@ private function getContainer(array $config, ?array $dbalConfig = null, ?array $ $extension->load(['doctrine' => $doctrineBundleConfigs], $container); + $extension = new DoctrineMigrationsExtension(); + $extension->load(['doctrine_migrations' => $config], $container); + $container->getDefinition('doctrine.migrations.dependency_factory')->setPublic(true); $container->getDefinition('doctrine.migrations.configuration')->setPublic(true); + if ($container->hasDefinition('doctrine_migrations.schema_filter_listener')) { + $container->getDefinition('doctrine_migrations.schema_filter_listener')->setPublic(true); + } + $container->addCompilerPass(new CacheCompatibilityPass()); return $container;