romanzipp / laravel-migration-generator
Laravel Migration Generator
                                    Fund package maintenance!
                                                                            
                                                                                                                                        romanzipp
                                                                                    
                                                                
Installs: 595
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 1
Forks: 1
Open Issues: 1
pkg:composer/romanzipp/laravel-migration-generator
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 
JSONMySQL data type is not supported since Doctrine/DBAL interprets this asDoctrine\DBAL\Types\TextType - MySQL: Doctrine/DBAL can't differentiate between TEXT, LONGTEXT, MEDIUMTEXT