Phinx migrations generator
Generates Phinx migrations by comparing your current database with your schema information.
Requirements
- PHP 8.1 - 8.4
 
Features
- Framework independent
 - DBMS: MySQL 5.7+, MySQL 8, MariaDB (partially supported)
 - Initial schema
 - Schema difference
 - Database: character set, collation
 - Tables: create, update, remove, engine, comment, character set, collation
 - Columns: create, update, remove
 - Indexes: create, remove
 - Foreign keys: create, remove, constraint name
 
Install
Via Composer
composer require odan/phinx-migrations-generator --dev
Usage
Generating migrations
The first run generates an initial schema and a migration class.
The file schema.php contains the previous database schema and is compared with the current schema.
Based on the difference, a Phinx migration class is generated.
vendor/bin/phinx-migrations generate
When the generate command is executed again, only the difference to the last schema is generated.
Parameters
Parameter | Values | Default | Description
— | — | — | —
–name | string | | The class name.
–overwrite | bool |  | Overwrite schema.php file.
–path 
Running migrations
The Phinx migrate command runs all the available migrations.
vendor/bin/phinx migrate
Configuration
The phinx-migrations-generator uses the configuration of phinx.
Migration configuration
| Parameter | Values | Default | Description | 
|---|---|---|---|
| foreign_keys | bool | false | Enable or disable foreign key migrations. | 
| default_migration_prefix | string | null | If specified, in the absence of the name parameter, the default migration name will be offered with this prefix and a random hash at the end. | 
| generate_migration_name | bool | false | If enabled, a random migration name will be generated. The user will not be prompted for a migration name anymore. The parameter default_migration_prefix must be specified. The --name parameter can overwrite this setting. | 
    
| mark_generated_migration | bool | true | Enable or disable marking the migration as applied after creation. | 
| migration_base_class | string | \Phinx\Migration\AbstractMigration | 
      Sets up base class of created migration. | 
| schema_file | string | %%PHINX_CONFIG_DIR%%/db/ migrations/schema.php | 
      Specifies the location for saving the schema file. | 
Example configuration
Filename: phinx.php (in your project root directory)
<?php
// Framework bootstrap code here
require_once __DIR__ . '/config/bootstrap.php';
// Get PDO object
$pdo = new PDO(
    'mysql:host=127.0.0.1;dbname=test;charset=utf8mb4', 'root', '',
    array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_PERSISTENT => false,
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci',
    )
);
return [
    'paths' => [
        'migrations' => __DIR__ . '/../resources/migrations',
    ],
    'schema_file' => __DIR__ . '/../resources/schema/schema.php',
    'foreign_keys' => false,
    'default_migration_prefix' => '',
    'mark_generated_migration' => true,
    'environments' => [
        'default_environment' => 'local',
        'local' => [
            // Database name
            'name' => $pdo->query('select database()')->fetchColumn(),
            'connection' => $pdo,
        ]
    ]
];
Testing
composer test
Contributing
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
License
The MIT License (MIT). Please see License File for more information.