romanzipp/laravel-migration-generator

Laravel Migration Generator

0.0.18 2023-02-15 12:40 UTC

This package is auto-updated.

Last update: 2024-04-15 15:26:11 UTC


README

Latest Stable Version Total Downloads License GitHub Build Status SQLite GitHub Build Status MySQL GitHub Build Status MariaDB

⚠️ 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

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 as Doctrine\DBAL\Types\TextType
  • MySQL: Doctrine/DBAL can't differentiate between TEXT, LONGTEXT, MEDIUMTEXT