CakePHP4のマイグレーションでカラムを追加する

2020年12月10日

CakePHP4のマイグレーションでカラムを追加する方法を紹介します。
本記事ではCakePHP4.1.5を使用しています。

テーブルを作成する方法を以下の記事をご覧ください。

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

bakeコマンドを使用して、マイグレーションファイルを作成します。

bin/cake bake migration AddLoginKeyToUsers login_key:string?

「AddLoginKeyToUsers」という部分がテーブルにカラムを追加するという記述になります。
カラムを追加する場合は「Add」と先頭に付け、その後にカラム名を記述します。
そして、「ToUsers」という形で、追加する対象のテーブル名を記述します。

対象のカラムは、「login_key」という文字列型のカラムをNull許容で追加する、という記述です。

作成されたマイグレーションにカラムを追加する位置を追加

作成されたマイグレーションファイルを修正することで、カラムの追加位置を指定することができます。

public function change()
{
    $table = $this->table('users');
    $table->addColumn('login_key', 'string', [
        'default' => null,
        'limit' => 255,
        'null' => true,
        'after' => 'token',
    ]);
    $table->update();
}

'after’ => 'token’ という記述を追加しています。
本記事の例だと、「token」というカラムの後に追加されることになります。

これでマイグレーションを実行すると、カラムが追加されます。

bin/cake migrations migrate

実際にデータベースを見てみると、「token」というカラムの後に「login_key」というカラムが追加されているのが確認できました。

マイグレーション後にカラムが追加されているのを確認