Help us understand the problem. What is going on with this article?

マイグレーションで既存のテーブルにカラムを追加する方法

More than 1 year has passed since last update.

マイグレーションファイルの作成

bin/cake Migrations create[or bake] マイグレーションファイル名

マイグレーションファイル作成と同時に、カラムなどの追加情報をマイグレーションファイルにいれたい場合。

bin/cake Migrations create(or bake) マイグレーションファイル名 カラム名:型

マイグレーションファイルに追加内容を書く

<?php
use Migrations\AbstractMigration;

class AddColumnHogeToHogeHoge 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()
    {
    }
}

このようなファイルが作成されるので、changeメソッド内に書いていく。

public function change()
    {
        $table = $this->table('hoge_hoge');
        $table->addColumn('hoge', 'integer', [
            'null' => true,
        ]);
        $table->update();
    }

addColumnメソッド内の第一引数に「カラム名」、第二引数に「型」を指定する。

'null' => trueの一文は、そのカラムの情報が入るか不確かな場合、NULLを許可するという意味で、trueにするといいと思います。
確実にこのカラムには、データが入っていないといけない場合は、falseがいいと思います。

他にもこの連想配列の中に文字数制限のlimitや、デフォルト値を指定するdefaultなどいろいろあるので、要件によって指定するといいです。

マイグレーションファイル作成時に、カラム名:型を指定すると、メソッド内にこれらの情報が書かれて作成されます。

マイグレーションの実行

bin/cake Migrations migrate

実行されたかの確認は、
bin/cake Migrations statusを入力して、作成したマイグレーションファイルが「up」になっていればOK。
「down」の場合は、適用されていない状態を表す。

マイグレーションファイル作成後に、statusで確認すると、downになっている。

もし、実行後に修正を加えたい場合
bin/cake migrations rollback
を入力する事で、一つ前に戻る事が出来る。

rollbackコマンド実行後に、statusコマンドで状態を確認すると、up⇨downになっています。

まとめ

マイグレーションファイル作成⇨情報(カラム、型など)の追加⇨実行⇨確認

tatsuo-iriyama
Web Engineer|96'|高卒|前職:溶接工|2019-01〜ユアマイスター株式会社|
yourmystar
サービス産業のIT化プラットフォーム「ユアマイスター」と大切なものをもっと大切にするメディア「ユアマイスター スタイル」を運営するスタートアップです。
http://corp.yourmystar.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした