cakePHP3マイグレーション

ついこの間まで暑かったのに、寒くなりましたね。もうちょっとちょうどいい気温の時期ができてほしいです。

温度差で風邪ひきそうですし、服装もどうしたもんかと困ります。

今回はちょっと慣れてきた、cakePHP3のマイグレーション関連をまとめておこうと思います。

マイグレーションファイルに以下のように書きます。

マイグレーション

$this->table('user', ['id' => false, 'primary_key' => ['id']])
            ->addColumn('id', 'biginteger', [
                'autoIncrement' => true,
                'default' => null,
                'limit' => 20,
                'null' => false,
            ])
            ->create();

最後の行は、テーブルごと作成する場合は「create」、カラムを追加する場合は「update」となります。

‘autoIncrement’は自動で登録されたものの数字が増えていくようにするものです。(idで使用)

‘default’はデータベースに登録された時間を自動で入れたい場合には’CURRENT_TIMESTAMP’と指定します。

‘limit’ は入る桁数、’null’は空でもいいか否かです。

コマンド

マイグレーションをデータベースに反映させるには、ターミナルからコマンドを叩きます。

マイグレーションをデータベースに反映させる場合

bin/cake migrations migrate マイグレーション名

指定のファイルのみが入っている状態まで戻す場合

bin/cake migrations rollback -t 20220101000000 マイグレーション名

マイグレーションファイルのpublic function down()関数に以下のように書いていれば使えます。

カラムだけ足した場合

$this->table('users')
            ->removeColumn('token')
            ->update();

テーブルごと足した場合

$this->table('stockholders')->drop()->save();

一つ戻す場合

 bin/cake migrations rollback --client=develop-regrex

同じファイルから追加で入れる場合

前に入れていた部分をコメントアウトしていれば入れることができます。

その場合は、データベースの’phinxlog’というマイグレーションの履歴が残っているテーブルで、追加し直すファイルのデータを消す必要があります。