Migrationの使い方についてまとめてみました。(CI4)

CodeIgniter

Codeigniter3 より引き続きデータベース管理機能のMigrationがバージョン4でも使えるようになっていますが、バージョン4よりSPARK という専用のコマンドラインツールが搭載されました。

Migrationの操作も SPARK のコマンドラインより実行する仕様になっているので、このマニュアルを簡単に説明します。

初期設定

Migrationを使うには、プロジェクトを始める段階で以下の設定を済ませておく必要があります。

app/Config/Migrations.php
・・・省略
public $enabled = true; // Migration機能を有効にする
・・・省略
public $timestampFormat = 'YmdHis_'; // データの採番フォーマットを指定
・・・省略

動作確認

設定が完了したら、以下のSPARKコマンドを実行します。

[yourname@xxx.xxx.xxx.xxx]# php spark migrate

以下、コマンド実行ログです。

[yourname@xxx.xxx.xxx.xxx]# php spark migrate

CodeIgniter CLI Tool - Version 4.0.0-rc.3 - Server-Time: 2019-12-23 16:32:47pm

Running all new migrations...
Done
[yourname@xxx.xxx.xxx.xxx]#

コマンド実行後、データベースに、migrations テーブルが生成されていたら、成功です。

テーブル作成例

試しにblogテーブルの作成してみます。

Migrationファイルの生成

以下のコマンドを実行します。

[yourname@xxx.xxx.xxx.xxx]# php spark migrate:create Add_blog

以下、実行ログです。

[yourname@xxx.xxx.xxx.xxx]# php spark migrate:create Add_blog

CodeIgniter CLI Tool - Version 4.0.0-rc.3 - Server-Time: 2019-12-21 16:38:40pm

Created file: App/Database/Migrations/20191221073840_Add_blog.php
[yourname@xxx.xxx.xxx.xxx]#

スキーマ情報の編集

作成された、20191221073840_Add_blog.phpを以下のように編集します。

<?php

class Migration_Add_blog extends \CodeIgniter\Database\Migration {

  public function up()
  {
    $this->forge->addField(array(
      'id' => array(
        'type' => 'INT',
        'constraint' => 5,
        'unsigned' => TRUE,
        'auto_increment' => TRUE
      ),
      'title' => array(
        'type' => 'VARCHAR',
        'constraint' => '100',
      ),
      'description' => array(
        'type' => 'TEXT',
        'null' => TRUE,
      ),
    ));
    $this->forge->addKey('id', TRUE);
    $this->forge->createTable('blog');
  }

  public function down()
  {
    $this->forge->dropTable('blog');
  }
}

スキーマーの実行

作成したMigrationファイルを以下のコマンドで実行し、データベースへスキーマ情報を展開します。

[yourname@xxx.xxx.xxx.xxx]# php spark migrate

以下、実行ログです。

[yourname@xxx.xxx.xxx.xxx]# php spark migrate

CodeIgniter CLI Tool - Version 4.0.0-rc.3 - Server-Time: 2019-12-21 16:44:08pm

Running all new migrations...
        Running: (App) 20191221073840_\Migration_Add_blog
Done
[yourname@xxx.xxx.xxx.xxx]#

実行後、データベースにblogテーブルが生成されている事が確認できます。

データベースを一つ戻す(rollback)

テーブルやカラムの修正等でMigrationの実行履歴を戻す場合は以下のコマンドを実行します。

[yourname@xxx.xxx.xxx.xxx]# php spark migrate:rollback <戻る数>

先程、blog テーブルを作成したので、作成前の状態に戻す場合は「戻る数」の引数を以下のように1を指定します。

[yourname@xxx.xxx.xxx.xxx]# php spark migrate:rollback 1

CodeIgniter CLI Tool - Version 4.0.0-rc.3 - Server-Time: 2019-12-21 17:23:28pm

Rolling back migrations to batch:  0
        Rolling back: (App) 20191221073840_Add_blog
Done
[yourname@xxx.xxx.xxx.xxx]#

これでデータベースから、blogテーブルが削除されている事が確認できます。

補足

Rollbackは編集したMigrationファイルの down() メソッドを実行します。

down() メソッドに何も指定しない場合は、Rollbackを実行しても何も行われませんので、ご注意ください。

付録

使う頻度の高い型を表にまとめました。

内容
INT数値
VARCHAR文字列(文字数指定)
TEXT文字列
DATE年月日
DATETIME年月日時分秒
TIMESTAMP 年月日時分秒 (主にレコードの更新・作成等で使用)

コメント

タイトルとURLをコピーしました