doctrine/migrations
Doctrine Migrations manages database schema changes via versioned migrations for PHP projects. Generate, run, and track migration scripts, integrate with Doctrine DBAL/ORM, and safely evolve schemas across environments with robust CLI tooling and documentation.
preMigration, postMigration), enabling integration with Laravel’s event system (e.g., Illuminate\Support\Facades\Event) for workflow extensions.php artisan migrate) without requiring a full rewrite.doctrine:migrations:execute) and programmatic execution (e.g., in Laravel’s bootstrap/app.php or service providers), offering flexibility.Illuminate\Database\Migrations\Migration). Doctrine Migrations uses its own format (YAML/XML/PHP). Risk: Medium if the team is heavily invested in Laravel’s native migrations. Mitigation: Use Doctrine Migrations for new projects or as a supplement.YYYY_MM_DD_HHMMSS_* format) be transitioned or coexist?doctrine/dbal and doctrine/migrations). Register the Migrations\Configuration in a Laravel service provider (e.g., App\Providers\AppServiceProvider) to enable programmatic access.use Doctrine\Migrations\Configuration\Connection\ConnectionConfiguration;
use Doctrine\Migrations\Configuration\Migration\PhpFile;
use Doctrine\Migrations\DependencyFactory;
public function register()
{
$connection = \DB::connection()->getDoctrineConnection();
$config = new ConnectionConfiguration($connection);
$config->setMigrationsDirectory(__DIR__.'/../database/migrations/doctrine');
$config->setMigrationsTableName('migration_versions');
$config->setAllOrNothing(true);
$factory = new DependencyFactory();
$migration = $factory->createConfiguration($config, new PhpFile(__DIR__.'/../database/migrations/doctrine'));
}
php artisan vendor:publish --provider="Doctrine\Migrations\Bundle\DoctrineMigrationsBundle" --tag=config
app/Console/Kernel.php:
protected $commands = [
// ...
\Doctrine\Migrations\Tools\Console\Command\MigrateCommand::class,
\Doctrine\Migrations\Tools\Console\Command\DiffCommand::class,
];
Schema builder.--all-or-nothing flag), aligning with Laravel’s transaction handling.--query flag allows running raw SQL if needed.DatabaseMigrations trait or custom test cases to verify Doctrine Migrations alongside Eloquent models.migration_versions table (or reuse Laravel’s migrations table with caution).php artisan doctrine:migrations:execute).doctrine:migrations:diff). This reduces manual SQL script maintenance.diff before deploying schema changes.doctrine:migrations:dump-schema to inspect the current schema.--dry-run to preview changes.\Log::debug()) within custom migration logic.--query for bulk operations).How can I help you explore Laravel packages today?