sylius-labs/doctrine-migrations-extra-bundle
Symfony bundle extending DoctrineMigrationsBundle with container-aware migration instantiation and topological sorting of migrations across multiple namespaces/bundles. Configure migration dependencies to ensure predictable, correct execution order in apps or bundles.
Core\Migrations → Plugin\Migrations). This aligns well with modular PHP/Laravel monoliths or plugin-based architectures (e.g., Sylius, eZ Platform) where migrations must execute in a strict order.MigrationFactory with a container-aware version, allowing dynamic configuration of migrations. This is highly compatible with Symfony/Laravel’s service container but may require adjustments in standalone PHP or non-containerized setups.App\Migrations), which is critical for large codebases with overlapping migration paths.Key Use Cases:
User migration requiring a Role migration, which in turn depends on User).doctrine-migrations bundle). Laravel’s doctrine/dbal and migrations packages are backward-compatible with Symfony’s doctrine-migrations, but Laravel’s Schema::create() may conflict with Doctrine’s migration system. Mitigation: Use this bundle only for Doctrine migrations, not Laravel’s native migrations.doctrine/dbal) and Doctrine Migrations (doctrine/migrations). The bundle won’t work with Laravel’s php artisan migrate (Eloquent). Workaround: Use it only for complex schema changes managed via Doctrine.Blockers:
| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Migration Order Errors | High | Thoroughly test topological dependencies. Use doctrine:migrations:dump-schema to validate. |
| Symfony vs. Laravel Conflicts | Medium | Isolate Doctrine migrations to a separate namespace (e.g., Doctrine\Migrations). |
| Performance Overhead | Low | Topological sorting adds minimal overhead (~50ms for large migration sets). |
| Bundle Maintenance | Low | MIT-licensed, actively maintained (last release: 2026). Minor/patch updates expected. |
| Backward Compatibility | Medium | Follows semver; major versions may break migration ordering logic. |
Critical Questions for TPM:
sylius_labs_doctrine_migrations_extra.yaml?| Component | Compatibility | Notes |
|---|---|---|
| Symfony 6–8.x | ✅ Full | Native support via doctrine-migrations bundle. |
| Laravel 10–11 | ⚠️ Partial | Requires Doctrine DBAL + Migrations; won’t replace Eloquent migrations. |
| PHP 8.1–8.5 | ✅ Full | Aligns with modern PHP versions. |
| Doctrine DBAL | ✅ Required | Must be installed (composer require doctrine/dbal). |
| Doctrine Migrations | ✅ Required | Must be installed (composer require doctrine/migrations). |
| Custom Migration Tools | ❌ May Conflict | Avoid tools that override Doctrine’s migration loader (e.g., Laravel’s Schema). |
composer require doctrine/dbal doctrine/migrations sylius-labs/doctrine-migrations-extra-bundle
config/bundles.php:
SyliusLabs\DoctrineMigrationsExtraBundle\SyliusLabsDoctrineMigrationsExtraBundle::class => ['all' => true],
config/packages/doctrine_migrations.yaml:
doctrine_migrations:
services:
'Doctrine\Migrations\Version\MigrationFactory': 'SyliusLabs\DoctrineMigrationsExtraBundle\Factory\ContainerAwareVersionFactory'
'Doctrine\Migrations\Version\Comparator': 'SyliusLabs\DoctrineMigrationsExtraBundle\Comparator\TopologicalVersionComparator'
# config/packages/sylius_labs_doctrine_migrations_extra.yaml
sylius_labs_doctrine_migrations_extra:
migrations:
'App\Core\Migrations': ~
'App\Plugin\Migrations': ['App\Core\Migrations']
php bin/console doctrine:migrations:diff --namespace=App\\Core\Migrations
composer require doctrine/dbal doctrine/migrations sylius-labs/doctrine-migrations-extra-bundle
Doctrine\Migrations) for Doctrine-managed migrations.php artisan migrate).config/bundles.php (if using Laravel’s Symfony integration, e.g., laravel/symfony).# config/packages/sylius_labs_doctrine_migrations_extra.yaml
sylius_labs_doctrine_migrations_extra:
migrations:
'Doctrine\Migrations\Core': ~
'Doctrine\Migrations\Plugin': ['Doctrine\Migrations\Core']
php bin/console doctrine:migrations:execute --up-to-date
Auth\Migrations).| Scenario | Compatibility | Notes |
|---|---|---|
| Symfony + Doctrine Migrations | ✅ Full | Zero-config beyond bundle installation. |
| Laravel + Eloquent Migrations | ❌ Incompatible | Avoid mixing; use separate namespaces. |
| Custom Migration Loaders | ⚠️ Partial | May require extending TopologicalVersionComparator. |
| Parallel Migration Execution | ❌ Broken | Topological sorting requires sequential execution. |
| Database-Specific Quirks | ✅ Full | Works with any Doctrine-supported DB. |
How can I help you explore Laravel packages today?