参考
https://readouble.com/laravel/8.x/ja/migrations.html#column-method-integer
マイグレーションとは
Lravel公式には以下の記述があります。
マイグレーションはデータベースのバージョン管理のようなもので、チームがアプリケーションのデータベーススキーマを定義および共有できるようにします。ソース管理から変更を取得した後に、ローカルデータベーススキーマにカラムを手動で追加するようにチームメートに指示する必要があったことを経験していれば、データベースのマイグレーションにより解決される問題に直面していたのです。
マイグレーションとは、「移行」を意味します。 テーブル定義を管理するために実行するコマンドです。 テーブルに変更があった際、チームのメンバーのテーブルを簡単にアップデートが行えます。
Laravelにおけるマイグレーション
マイグレーションファイルの作成
php artisan make:migration ファイル名
上記コマンドを実行すると、database/migrationsの下にマイグレーションファイルが作成されます。
この時のファイル名には、Laravelがマイグレーションの順序を決定できるようにするタイムスタンプを含めて作成されます。
ただし、この時指定するファイル名が既存のものと被るとClass名として被るため、Fatalになって失敗します。
これを回避するために、create_hogehoge_table
みたいな感じで操作名とテーブル名などを含むようにして被ることの無いよう工夫する必要があります。
マイグレーションファイルの編集
先述したartisanコマンドでマイグレーションファイルを作成すると、デフォルトでup
とdown
というメソッドが定義されています。
up
メソッドにはデータベース構造の変更を実施する際に実行される内容を記述します。
down
メソッドにはup
メソッドの操作を元に戻す内容を記述します。
記述後、
php artisan migrate
を実行することでマイグレーションが実行されます。
マイグレーションの取り消し
マイグレーションを行った後、取り消したい場合には以下のコマンドを実行することでロールバックすることができます。
- 最新のマイグレーションを取り消す
php artisan migrate:rollback
- 全てのマイグレーションを取り消す
php artisan migrate:reset
また、指定した回数分巻き戻す場合は--step
オプションで巻き戻したい件数を指定しましょう。
全てのデータベースマイグレーションをロールバックし、それからmigrate
コマンドを実行したい場合は以下のコマンドで対応できます。データベース全体を作り直すために便利なコマンドです。
php artisan migrate:refresh
また、--seed
オプションを付けることで全データベースシードを実行できます。
まとめというかメモ
マイグレーションという仕組みを用いることで、チームで開発する際のデータベースの更新の際に生じる問題を解決できます。
詳細なSchema
ビルダの使い方は公式ドキュメントに説明を譲るとして、注意しとかないといけないなと感じた箇所をメモしておきます。
change
メソッドは存在するカラムを新しいタイプへ変更するか、カラムの属性を変える際に使用します。$table->timestamps();
でcreated_at
とupdated_at
の二つのカラムが追加されます。- 文中でも一度書きましたが、名前被りには気をつける。
- migrationはあくまでテーブルの構造なので、中身を作成するのはseederで行う。
所感
Laravelの仕組みを用いることで、チーム開発が捗る部分がとても多いなということを日々実感します。
ただし、Laravelの機能を使用するということはつまり、Laravelに依存するということになります。
クリーンアーキテクチャを意識すると、フレームワークに依存する箇所とそうでない、生のPHPを使用する箇所を分離することになります。 どの部分がLaravelの機能で、どの部分がPHPの機能なのか、しっかり分けられるよう意識しておかないと初学者のうちはごちゃ混ぜになってしまいそうなので気をつけたいと感じました。