romanzipp / laravel-migration-generator
Laravel Migration Generator
Fund package maintenance!
romanzipp
Requires
- php: ^7.2|^8.0
- ext-json: *
- doctrine/dbal: ^2.8
- illuminate/console: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/support: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- mockery/mockery: ^1.3.2
- orchestra/testbench: >=3.8
- phpstan/phpstan: ^0.12.99|^1.0
- phpunit/phpunit: ^8.0|^9.0
- romanzipp/php-cs-fixer-config: ^3.0
README
⚠️ WORK IN PROGRESS ⚠️
Generate Laravel migration files from existing databases.
Installation
composer require romanzipp/laravel-migration-generator
If you use Laravel 5.5+ you are already done, otherwise continue.
Add Service Provider to your app.php
configuration file:
romanzipp\MigrationGenerator\Providers\MigrationGeneratorProvider::class,
Configuration
Copy configuration to config folder:
$ php artisan vendor:publish --provider="romanzipp\MigrationGenerator\Providers\MigrationGeneratorProvider"
Usage
php artisan mg:generate {--connection=}
You will see various new migration files prefixed with the current time & date.
Notice: This package can't guess the order in which migrations will be created. If you've created some foreign keys in your database, be sure to re-order the migration files based on these relations.
Supported Databases
- MySQL
- MariaDB
- SQLite (Info on Datatypes)
Features
- Tables
- Columns
- Column modifiers (nullable, default, ...)
- Indexes
- Foreign keys
Testing
There are tests with the following matrix.
- PHP
- 7.2
- 7.3
- 7.4
- 8.0
- 8.1
- 8.2
- Databases
- SQLite
- MySQL
- MariaDB
- Composer dependency versions
- latest
- lowest
SQLite
./vendor/bin/phpunit
MySQL / MariaDB
Requires a running MySQL / MariaDB server
./vendor/bin/phpunit -c phpunit.mysql.xml
Provide database environment variables
DB_HOST=127.0.0.1 DB_USERNAME=user DB_PASSWORD=secret ./vendor/bin/phpunit -c phpunit.mysql.xml
Known issues
- MariaDB: The
JSON
MySQL data type is not supported since Doctrine/DBAL interprets this asDoctrine\DBAL\Types\TextType
- MySQL: Doctrine/DBAL can't differentiate between TEXT, LONGTEXT, MEDIUMTEXT