Migrationデータベース移行ツール Phinx

説明

Phinxは、開発者がデータベースを簡潔に修正および維持することを可能にします。 人為的な手書きのSQL文を避け、強力なPHP APIを使用してデータベースの移行を管理します。 開発者はバージョン管理を使用して、データベースの移行を管理できます。 Phinxは、異なるデータベース間でのデータ移行を簡単に行うことができます。また、どの移行スクリプトが実行されたかを追跡できるため、開発者はデータベースの状態を心配することなく、より良いシステムを作成することに集中できます。

プロジェクトアドレス

https://github.com/cakephp/phinx

インストール

  composer require robmorgan/phinx

公式日本語文書アドレス

詳細な使用方法については、公式日本語文書をご覧ください。ここでは、webmanでの設定方法についてのみ説明します。

https://tsy12321.gitbooks.io/phinx-doc/content/

移行ファイルのディレクトリ構造

.
├── app                           アプリケーションディレクトリ
│   ├── controller                コントローラディレクトリ
│   │   └── Index.php             コントローラ
│   ├── model                     モデルディレクトリ
......
├── database                      データベースファイル
│   ├── migrations                移行ファイル
│   │   └── 20180426073606_create_user_table.php
│   ├── seeds                     テストデータ
│   │   └── UserSeeder.php
......

phinx.php 設定

プロジェクトルートディレクトリに phinx.php ファイルを作成します。

<?php
return [
    "paths" => [
        "migrations" => "database/migrations",
        "seeds"      => "database/seeds"
    ],
    "environments" => [
        "default_migration_table" => "phinxlog",
        "default_database"        => "dev",
        "default_environment"     => "dev",
        "dev" => [
            "adapter" => "DB_CONNECTION",
            "host"    => "DB_HOST",
            "name"    => "DB_DATABASE",
            "user"    => "DB_USERNAME",
            "pass"    => "DB_PASSWORD",
            "port"    => "DB_PORT",
            "charset" => "utf8"
        ]
    ]
];

使用の推奨

移行ファイルは、一度コードがマージされた後は再度変更することを許可しません。問題が発生した場合は、新たに変更または削除操作ファイルを作成して対応する必要があります。

データテーブル作成操作ファイルの命名ルール

{time(auto create)}_create_{テーブル名英小文字}

データテーブル修正操作ファイルの命名ルール

{time(auto create)}_modify_{テーブル名英小文字+具体的修正項目英小文字}

データテーブル削除操作ファイルの命名ルール

{time(auto create)}_delete_{テーブル名英小文字+具体的修正項目英小文字}

データ補填ファイルの命名ルール

{time(auto create)}_fill_{テーブル名英小文字+具体的修正項目英小文字}