hypocenter/phinx-migrations-generator

Migration generator for Phinx

5.5.0 2021-04-13 09:47 UTC

README

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

Requirements

  • PHP 7.2+ or 8.0+

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

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

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=utf8', 'root', '',
    array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_PERSISTENT => false,
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8 COLLATE utf8_unicode_ci',
    )
);

// Get migration path for phinx classes
$migrationPath = __DIR__ . '/resources/migrations';

return [
    'paths' => [
        'migrations' => $migrationPath,
    ],
    'foreign_keys' => false,
    'default_migration_prefix' => 'db_change_',
    'mark_generated_migration' => true,
    'migration_base_class' => \Phinx\Migration\AbstractMigration::class,
    '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.