mreycode / laravel-db-migrator
A production-grade Laravel package for complex, large-scale database migrations with resumable, monitored, and batch-aware processing.
Package info
github.com/jonreygalera/mreycode-laravel-db-migrator
pkg:composer/mreycode/laravel-db-migrator
Requires
- php: ^8.2
- illuminate/bus: ^11.0|^12.0
- illuminate/console: ^11.0|^12.0
- illuminate/database: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
Requires (Dev)
- laravel/pint: ^1.14
- mockery/mockery: ^1.6
- orchestra/testbench: ^9.0|^10.0
- pestphp/pest: ^2.34|^3.0
- pestphp/pest-plugin-laravel: ^2.3|^3.0
- phpstan/phpstan: ^1.10
README
Laravel Db Migrator
A production-grade Laravel package for complex, large-scale database migrations with resumable, monitored, and batch-aware processing.
Documentation
For full documentation, please visit Mreycode Docs - Laravel Db Migrator.
Introduction
Laravel Db Migrator transforms the often-chaotic process of data ETL (Extract, Transform, Load) into a manageable, monitored, and resumable workflow. Unlike standard schema migrations, this package is designed specifically for high-volume data movement between connections.
Installation
You can install the package via composer:
composer require mreycode/laravel-db-migrator
You should publish the configuration and system migrations using:
php artisan vendor:publish --tag=db-migrator-config php artisan vendor:publish --tag=db-migrator-migrations php artisan migrate
Quick Start
Generate a new migrator class:
php artisan make:db-migrator UserMigrator
Implement your migration logic:
namespace App\DbMigrators; use Mreycode\DbMigrator\AbstractDbMigrator; use App\Models\User; class UserMigrator extends AbstractDbMigrator { /** @var string The column name representing the unique ID in the source data */ public $migratorSourceId = 'source_id'; /** @var string The column name representing the unique ID in the target table */ public $migratorTargetId = 'id'; /** @var bool Set to true to store the source-to-target ID mapping in the history table */ public bool $recordMigratorHistory = false; public function sourceData() { return $this->getSourceConnection() ->table('legacy_users') ->offset($this->getOptions()['offset']) ->limit($this->getOptions()['limit']) ->get(); } public function handle($params = null) { foreach ($params['sourceData'] as $row) { User::create([ 'name' => $row->full_name, 'email' => $row->email, ]); } } }
Run your migration via the interactive dashboard:
php artisan mreycode:db-migrate -i
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security-related issues, please email jonreygalera@gmail.com instead of using the issue tracker.
License
The MIT License (MIT). Please see License File for more information.
