doesntmattr/mongodb-migrations-bundle
Symfony bundle that integrates the doesntmattr MongoDB Migrations library, providing configuration and tooling to run MongoDB schema/data migrations in Symfony apps. Supports PHP 5.6 via v1.x and PHP 7.1+ via v3.x.
migration_versions), ensuring deterministic execution.AppKernel and YAML config (e.g., config.yml), requiring Laravel-specific adaptations (e.g., config/services.php).Console/Kernel).php artisan make:migration with mongodb:migrations:generate for MongoDB-specific changes.mongodb:migrations:status to audit migration history (similar to Laravel’s migrate:status).migrate:rollback); manual version deletion (mongodb:migrations:version --delete) may be needed.doctrine/mongodb-odm-bundle equivalent).config.yml must be translated to Laravel’s config/mongodb-migrations.php.Console/Kernel::commands() or a custom facade.ContainerAwareInterface) may require significant refactoring.down() methods (vs. Laravel’s reversible migrations) could complicate disaster recovery.ManagerRegistry for Doctrine ODM).mongodb-migrations library if bundle integration proves too cumbersome.down() logic be implemented?Database class compatibility.)migrate Artisan command (e.g., chaining or replacement)?socketTimeoutMs) critical for large collections? If so, how will they be configured?Laravel Compatibility:
^3.0 branch.doctrine/mongodb-odm) for ContainerAwareInterface support.mongodb-migrations library directly for lighter integration.spatie/laravel-mongodb).Symfony vs. Laravel:
Console/Command and DependencyInjection via Laravel’s service container.config.yml with Laravel’s config/mongodb-migrations.php:
return [
'collection_name' => 'migration_versions',
'database_name' => env('DB_DATABASE'),
'dir_name' => database_path('migrations/mongodb'),
'namespace' => 'Database\\Migrations\\MongoDB',
];
Phase 1: Proof of Concept
composer require doesntmattr/mongodb-migrations-bundle "^3.0"
// app/Providers/MongoDBMigrationsServiceProvider.php
namespace App\Providers;
use AntiMattr\Bundle\MongoDBMigrationsBundle\MongoDBMigrationsBundle;
use Illuminate\Support\ServiceProvider;
class MongoDBMigrationsServiceProvider extends ServiceProvider {
public function register() {
$this->app->register(MongoDBMigrationsBundle::class);
}
}
php artisan vendor:publish --provider="AntiMattr\Bundle\MongoDBMigrationsBundle\MongoDBMigrationsBundle"
Phase 2: Command Integration
app/Console/Kernel.php:
protected $commands = [
\AntiMattr\Bundle\MongoDBMigrationsBundle\Command\MigrateCommand::class,
// ... other commands
];
php artisan mongodb:migrations:generate --name=add_index_to_users
Phase 3: Rollback Strategy
down() methods in migrations or use manual version deletion:
php artisan mongodb:migrations:version --delete 20231001000000
doctrine/mongodb-odm is installed and configured in config/packages/doctrine_mongodb_odm.php.Database class compatibility (Symfony’s MongoDB\Database vs. Laravel’s MongoDB\Client).Illuminate\Console\Command or be wrapped in a facade..env variables (e.g., DB_DATABASE, DB_MONGODB_URI).mongodb:migrations:migrate.down() logic.ManagerRegistry changes in Doctrine ODM).migration_versions collection simplifies auditing.Schema builder or migrate command.MONGODB_MIGRATIONS.md guide for the team.mongodb:migrations:status to diagnose failed migrations.Database object for MongoDB errors (e.g., duplicate keys).socketTimeoutMs for large collections (e.g., ['socketTimeoutMs' => 30000]).mongodb:migrations:migrate into deployment pipelines (e.g., GitHub Actions):
- run: php artisan mongodb:migrations:migrate --env=production --force
| Scenario | Impact | Mitigation | |----------------------------|-------------------------------------
How can I help you explore Laravel packages today?