Skip to content
CAI
Software that uses CAICheck a score

doctrine/DoctrineMigrationsBundle

62.8

Adequate · 19 September 2026

947

lines of production code

PHP

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is the Doctrine Migrations Bundle for Symfony, which manages database schema versioning and migration execution. It integrates with the Symfony container to support service-based migrations with dependency injection and provides profiling tools to monitor migration status. The bundle also handles configuration modernization, strict typing enforcement, and ensures migration metadata tables are excluded from general schema validation.

Features

Introduction of DoctrineMigrationsBundle entry point

A new DoctrineMigrationsBundle class has been added to the src directory, serving as the main entry point for the Symfony bundle. This class extends Symfony's Bundle base class and registers two compiler passes—ConfigureDependencyFactoryPass and RegisterMigrationsPass—during the container build phase, enabling the integration of Doctrine Migrations functionality within the Symfony application.

src · high confidence

Selective schema filtering for migration metadata table

A new SchemaFilterListener has been introduced to hide the migration metadata table from schema validation and update commands (ValidateSchemaCommand, UpdateCommand) by default. The filter only activates when these specific commands are executed, ensuring that the migration table is visible during migration operations but excluded from general schema checks, thereby preventing false positives or noise in schema validation reports.

src/EventListener · high confidence

Support for service-based migrations and improved profiler data

Users can now enable the \enable\_service\_migrations\ configuration option to load migrations directly from the service container, allowing migrations to benefit from dependency injection and service tagging. This change introduces new internal components (\ServiceMigrationsRepository\, \ServiceMigrationFactory\, \CompositeMigrationsRepository\) and compiler passes to wire these services. Additionally, the bundle now provides a dedicated profiler collector (\MigrationsCollector\) that visualizes migration status, including counts of new, executed, and unavailable migrations, as well as storage configuration details, when \enable\_profiler\ is turned on.

src/DependencyInjection · high confidence

Removals

Removal of legacy Doctrine Migrations command wrappers

The bundle has removed the legacy command wrapper classes (DoctrineCommand, MigrationsDiffDoctrineCommand, MigrationsExecuteDoctrineCommand, MigrationsGenerateDoctrineCommand, MigrationsMigrateDoctrineCommand, MigrationsStatusDoctrineCommand, and MigrationsVersionDoctrineCommand) from the Command directory. These classes previously extended Doctrine DBAL Migrations console commands and provided Symfony-specific integration via the --bundle and --em options. Their removal indicates a shift away from these specific wrapper implementations, likely requiring users to rely on the underlying Doctrine Migrations commands directly or updated bundle wiring.

Command · high confidence

Behavioural changes

DoctrineMigrationsBundle 4.0: Major breaking changes and modernization

This release introduces significant breaking changes for users upgrading to version 4.0. Support for PHP versions below 8.4, doctrine/orm below 3, and doctrine/doctrine-bundle below 3 has been dropped. The bundle now enforces strict typing, marking classes as final and internal, and adding type declarations to all method signatures and properties. A key behavioral change is the removal of automatic container injection for migrations implementing ContainerAwareInterface, requiring custom migration factories for dependency injection. Configuration structures have also shifted, notably moving namespace and directory settings under migrations\_paths and storage settings under storage.table\_storage, with the default metadata table name changing to doctrine\_migration\_versions. Users must update their configuration files and potentially adjust their migration classes to comply with these new requirements.

(repo-wide) · high confidence

Migrate service configuration from XML to PHP and introduce Doctrine Migrations 3.0 schema

The bundle's service configuration has been migrated from XML to a modern PHP-based definition in \config/services.php\, which registers the Doctrine Migrations dependency factory, command handlers, and new service-based migration support via \ServiceMigrationFactory\ and \ServiceMigrationsRepository\. Additionally, a new XSD schema file (\config/schema/doctrine\_migrations-3.0.xsd\) has been added to define the configuration structure for Doctrine Migrations 3.0, supporting features like organized migrations and table storage customization.

config · high confidence

Updated Doctrine Migrations profiler collector template

The Doctrine Migrations collector in the web profiler has been updated to support the modern v3 markup structure. This change introduces a new icon (icon-v3.svg) and modifies the migrations.html.twig template to conditionally render toolbar and panel content based on the profiler markup version, ensuring compatibility with both legacy and current profiler UI standards while displaying migration status metrics like executed, unavailable, and new migrations.

templates · high confidence

Test coverage

Added unit tests for migrations bundle components

Added comprehensive unit tests for the Doctrine Migrations Bundle, covering the SchemaFilterListener, MigrationsFlattener, RegisterMigrationsPass, DoctrineCommands, DoctrineMigrationsExtension, ServiceMigrationFactory, CompositeMigrationsRepository, and ServiceMigrationsRepository, along with necessary test fixtures.

tests · high confidence

Dependencies

Update dependencies for PHP 8.4 and Symfony 8 support

The bundle's composer.json has been updated to require PHP 8.4 and align with modern ecosystem versions. Production dependencies now include doctrine/dbal ^4, doctrine/doctrine-bundle ^3, and doctrine/migrations ^3.2, while Symfony components (config, console, dependency-injection, framework-bundle, http-foundation, http-kernel) support versions 6.4, 7.0, and 8.0. Development dependencies have also been upgraded, notably to PHPUnit ^13.3.2 and PHPStan ^2.2.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 63.

Lenses

  • Code Health 95
  • Architecture 69
  • Maturity 51
  • Readiness 72
  • Security 81
  • Accessibility 74

Changes since last survey

  • 300 commits — 282 feature/other, 18 fixes

By area

  • (repo) — 144 commits
  • (root) — 61 commits
  • .github/workflows — 33 commits
  • Resources/doc — 9 commits
  • src/DependencyInjection — 8 commits
  • tests/DependencyInjection — 8 commits
  • Collector/MigrationsCollector.php — 6 commits
  • src/EventListener — 6 commits
  • Resources/views — 4 commits
  • docs/index.rst — 4 commits
  • .github/dependabot.yml — 3 commits
  • Tests/DependencyInjection — 3 commits
  • config/services.xml — 3 commits
  • DependencyInjection/Configuration.php — 2 commits
  • config/services.php — 2 commits
  • DependencyInjection/DoctrineMigrationsExtension.php — 1 commit
  • src/Collector — 1 commit
  • tests/Collector — 1 commit
  • tests/Fixtures — 1 commit

Notable commits

  • fix: Fix .gitattributes
  • fix: Fix build (#425)
  • fix: Fix doctrine types attribute in documentation
  • fix: Fix filter support for multiple connections
  • fix: Fixes Issue #423 Collector ignores connection error
  • fix: Merge pull request #416 from HypeMC/profiler-fix
  • fix: Merge pull request #540 from connorhu/fix/gitattributes-fix
  • fix: Merge pull request #590 from tobias-93/fix-multiple-connections
  • fix: Merge pull request #605 from gregurco/fix-doc
  • fix: Merge pull request #606 from greg0ire/fix-build
  • fix: Merge pull request #646 from greg0ire/fix-build
  • fix: Merge pull request #648 from MirakuSan/fix/dbal-get-name-deprecation
  • fix: Merge pull request #651 from greg0ire/fix-build-minimal
  • fix: Merge pull request #683 from HypeMC/fix-680
  • fix: [Doc] Fix minor RST syntax issue
  • fix: fix current version in toolbar
  • fix: fix toolbar and menu not showing in profiler (#458)
  • fix: fix(schema): avoid deprecated AbstractAsset::getName() call
  • change: Group Doctrine workflow updates together
  • change: doc: the migrations table is named doctrine_migration_versions
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

doctrine/DoctrineMigrationsBundle was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 66c9b484aa4da95027ad483c11c3b78a1f58bb98 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.