Migration generator for Phinx


Generates Phinx migrations by comparing your current database with your schema information.

Latest Version on Packagist Software License Build Status Code Coverage Quality Score Total Downloads


  • PHP 8.1, 8.2


  • 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


Via Composer

composer require odan/phinx-migrations-generator --dev


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.


Parameter Values Default Description
--name string The class name.
--overwrite bool Overwrite schema.php file.
--path string (from phinx) Specify the path in which to generate this migration.
--environment or -e string (from phinx) The target environment.
--configuration or -c string (from phinx) The configuration file e.g. config/phinx.php

Running migrations

The Phinx migrate command runs all the available migrations.

vendor/bin/phinx migrate


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)


// Framework bootstrap code here
require_once __DIR__ . '/config/bootstrap.php';

// Get PDO object
$pdo = new PDO(
    'mysql:host=;dbname=test;charset=utf8mb4', 'root', '',
        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,


composer test


Please see CONTRIBUTING and CODE_OF_CONDUCT for details.


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