cakePHP(v3.x),migrationを使って既存のデータベースに新たなカラムを追加してみる.

Migrations

ここにあるようにCakePHPではデータベースのテーブル構造にgitのようにマイグレーションをかけて更新していくことができます.

今回はArticlesという既存のテーブルに新たなカラムstatusを加えていきます.まずコンソールで,

$ bin/cake bake migration AddStatusToArticles

のように打つと,新たなカラムを追加するためのマイグレーションファイルの雛形がconfig/Migrations下に生成されます. 今回のStatusの仕様はTinyINTでNullを許容しないので以下のように内容を編集して

use Migrations\AbstractMigration;
use Phinx\Db\Adapter\MysqlAdapter;
 class AddStatusToArticles extends AbstractMigration
{
    /**
     * Change Method.
     *
     * More information on this method is available here:
     * http://docs.phinx.org/en/latest/migrations.html#the-change-method
     * @return void
     */
    public function change()
    {
        $table = $this->table('articles');
        $table->addColumn('status', 'integer', [
            'default' => null,
            'limit' =>  MysqlAdapter::INT_TINY,
            'after' => 'prorated_period',
            'null' => false,
        ]);
        $table->update();
    }
}

再びコンソールで,

$ bin/cake migrations migrate

を入力することで新規のマイグレーションを実行することができます.テーブル構造をみると新たなカラムが追加されているはずです.

変更を差し戻したい時は

$ bin/cake migrations rollback

でもとに戻ります.