【CodeIgniter4】DBマイグレーションの導入
この記事は2022/11/30に作成されました。
CodeIgniter4(以降CI4)での開発が主になり、マイグレーションを使い始めました。
知っているとよい知識や開発ではこうすればいいのではという経験を紹介していきます。
マイグレーションとは?
一連番号orタイムスタンプのついたマイグレーションファイルにテーブルやそのフィールドに与える変更や構造を記述して管理していく機能です。
ex.ファイル名の例
2022-11-30-042007_CreateUsersMigration
2022-11-30-023519_UpdateUsersMigration
2022-12-01-030606_UpdateUsersMigration
メリットとしては、ファイルとして変更が見えるので他の開発者が加えた変更が分かりやすいことや別DBを使用している場合にコマンドですぐに最新の状態にアップデートすることができるなどがあります。
マイグレーションファイルの中には以下のコードのようなupメソッドとdownメソッドが存在し、それぞれアップデート処理とロールバック処理を書いていきます。
//アップデート処理
public function up(){
}
//ロールバック処理
public function down(){
}
マイグレーションを使ってみる
sparkコマンド
CI4からコマンドラインで利用できるsparkコマンドが導入されました。
> php spark コマンド名
php spark listで使用可能なコマンド一覧を表示できます。
sparkはappなどがあるプロジェクトルートにありますので、そこでコマンドを使用してください。フレームワーク内にもありますが、わざわざ深い階層まで行く必要はないでしょう。
マイグレーションファイル作成
//マイグレーションファイルを作成
> php spark make:migration ファイル名
ex.ファイルの命名例
CreateUsersMigration(テーブル作成時)
UpdateUsersMigration(テーブル変更時)
app/Database/Migrations内にマイグレーションファイルが作成されたと思うので確認してみてください。
マイグレーション実行
//マイグレーションを実行(最新)
> php spark migrate
成功するとmigration用のテーブルが作成され変更情報の入ったレコードが追加されます。
migrateコマンド紹介
//マイグレーションをロールバック(一つ前)
> php spark migrate:rollback
//マイグレーションをロールバック(バッチ3へロールバック)
> php spark migrate:rollback -b 3
//すべて䛾移行をロールバックしてから最新バージョンに移行
> php spark migrate:refresh
チームで行うときの注意点
・特に本番環境など、マイグレーションに限りませんが、DBのバックアップをとる。
・マイグレーションファイルの追加と変更はこまめに連絡しあうといいです。
実際に共有した方がよい点を挙げると、
・どのファイルを追加したか
・同じDBを使用している場合はDBへの反映をしたのか
・Gitには上がっているのか
などは連絡をすると良いです。
シーディングについて
シーディングとは?
Seeding(シーディング)とはデータベーステーブルにSeederファイルを使用してレコードを追加することです。
使いどころとしては、
・確実に登録がされるであろうレコード
・テストしたいサンプルデータ
などを投入するときに使います。
作成と実行
//Seederファイルを作成
> php spark make:seeder ファイル名
成功するとapp/Database/Seeds内にSeederファイルが作成されます。
Seederファイルの中には以下のコードのようなrunメソッドが存在し、登録したレコードを書いていきます。
public function run()
{
$data = [
['id' => 1, 'title' => 'タイトルA', 'content' => '内容A'],
['id' => 2, 'title' => 'タイトルB', 'content' => '内容B'],
['id' => 3, 'title' => 'タイトルC', 'content' => '内容C']
];
$this->db->table('table')->insertBatch($data);
}
記述出来たら、実行します。
//Seederを実行
> php spark db:seed ファイル名
まとめ
今回はCI4で行うDBマイグレーションについて書かせていただきました。
フレームワークの機能を理解して使いこなせると作業が効率的に進むと思います。
以上になります。
ありがとうございました。
プログラマー/K.D