Skip to content

Commit bdaad22

Browse files
authored
Merge pull request #432 from jmsche/transactional_configuration
Allow configuring "transactional" config
2 parents 03633e1 + 7d91509 commit bdaad22

File tree

5 files changed

+40
-1
lines changed

5 files changed

+40
-1
lines changed

DependencyInjection/Configuration.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,10 @@ public function getConfigTreeBuilder(): TreeBuilder
151151
->info('Use profiler to calculate and visualize migration status.')
152152
->defaultFalse()
153153
->end()
154+
->booleanNode('transactional')
155+
->info('Whether or not to wrap migrations in a single transaction.')
156+
->defaultTrue()
157+
->end()
154158
->end();
155159

156160
return $treeBuilder;

DependencyInjection/DoctrineMigrationsExtension.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ public function load(array $configs, ContainerBuilder $container): void
7777
$this->registerCollector($container);
7878
}
7979

80+
$configurationDefinition->addMethodCall('setTransactional', [$config['transactional']]);
81+
8082
$diDefinition = $container->getDefinition('doctrine.migrations.dependency_factory');
8183

8284
if (! isset($config['services'][MigrationFactory::class])) {

Resources/doc/index.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ application:
8080
# Adds an extra check in the generated migrations to ensure that is executed on the same database type.
8181
check_database_platform: true
8282
83+
# Whether or not to wrap migrations in a single transaction.
84+
transactional: true
85+
8386
services:
8487
# Custom migration sorting service id
8588
'Doctrine\Migrations\Version\Comparator': ~

Tests/DependencyInjection/DoctrineMigrationsExtensionTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,36 @@ public function testCanNotSpecifyBothEmAndConnection(): void
395395
$container->compile();
396396
}
397397

398+
public function testTransactionalIsTrueIfNotSet(): void
399+
{
400+
$container = $this->getContainerBuilder();
401+
402+
$container->registerExtension(new DoctrineMigrationsExtension());
403+
$container->setAlias('doctrine.migrations.configuration.test', new Alias('doctrine.migrations.configuration', true));
404+
405+
$loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Fixtures'));
406+
$loader->load('conf.xml');
407+
408+
$container->compile();
409+
410+
$config = $container->get('doctrine.migrations.configuration.test');
411+
assert($config instanceof Configuration);
412+
413+
self::assertTrue($config->isTransactional());
414+
}
415+
416+
public function testTransactionalSetToFalseReflectsInConfig(): void
417+
{
418+
$config = ['transactional' => false];
419+
$container = $this->getContainer($config);
420+
$container->compile();
421+
422+
$config = $container->get('doctrine.migrations.configuration');
423+
assert($config instanceof Configuration);
424+
425+
self::assertFalse($config->isTransactional());
426+
}
427+
398428
/**
399429
* @param mixed[] $config
400430
* @param mixed[]|null $dbalConfig

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"php": "^7.2|^8.0",
2424
"symfony/framework-bundle": "~3.4|~4.0|~5.0",
2525
"doctrine/doctrine-bundle": "~1.0|~2.0",
26-
"doctrine/migrations": "^3.1"
26+
"doctrine/migrations": "^3.2"
2727
},
2828
"require-dev": {
2929
"phpunit/phpunit": "^7.0|^8.0|^9.0",

0 commit comments

Comments
 (0)