always-open/laravel-migration-snapshot

Dump and load snapshots of the schema produced by individual migrations.

v4.4.0 2023-06-08 02:14 UTC

README

Latest Version on Packagist build Total Downloads

Simplify and accelerate applying many migrations at once using a flattened dump of the database schema and migrations, similar in spirit to Rails' schema.rb.

Works with the mysql, pgsql, and sqlite database drivers.

Laravel 8+ has schema:dump which serves a similar purpose. This package may still be preferred if one wants the dumping to be automatic after each migrate invocation, old migrations to remain in place, or to also dump data.

Installation

You can install the package via composer:

composer require --dev always-open/laravel-migration-snapshot

Database command-line utilities (such as mysqldump and mysql) must be in the path where Artisan will be run.

Configuration

Put migration-snapshot.php into config with:

php artisan vendor:publish --provider="\AlwaysOpen\MigrationSnapshot\ServiceProvider"

Usage

Implicitly migrate as load from an earlier, flattened copy:

php artisan migrate

(When migrations table is empty and migrating a configured environment; defaults to 'development', 'local', and 'testing'.)

Migrate without loading from, or dumping to, flattened copy:

MIGRATION_SNAPSHOT=0  php artisan migrate

Update the flattened SQL file:

php artisan migrate:dump

Load from the flattened SQL file, dropping any existing tables and views:

php artisan migrate:load

Testing

composer test

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.