マイグレーションとは
マイグレーションはデータベースのバージョン管理のようなものです。 チームがアプリケーションのデータベーススキーマ定義を共有・管理できます。 ソースコードを pull した後に「ローカルのデータベースにカラムを手動で追加してください」とチームメンバーに伝えなければならない場面を経験したことがあるでしょう。 マイグレーションはその問題を解決します。 マイグレーションファイルはdatabase/migrations ディレクトリに格納されます。
各ファイル名にはタイムスタンプが含まれており、Laravelがマイグレーションの実行順序を決定するために使われます。
マイグレーションファイルの作成
make:migration Artisanコマンドで新しいマイグレーションファイルを生成します。
create_posts_table という名前であれば、posts テーブルを作成するコードがあらかじめ用意されます。
マイグレーションの構造
マイグレーションクラスはup と down の2つのメソッドを持ちます。
upメソッド:テーブル・カラム・インデックスをデータベースに追加します。downメソッド:upの操作を元に戻します。ロールバック時に呼ばれます。
主なカラム定義メソッド
Blueprint クラスには多くのカラム型が用意されています。
カラム修飾子
カラム定義にはメソッドチェーンで修飾子を追加できます。マイグレーションの実行
migrate コマンドで未実行のマイグレーションをすべて実行します。
migrate:status を使います。
ロールバック
直近のマイグレーションバッチを取り消すにはmigrate:rollback を使います。
--step オプションを指定します。
migrate:refresh を使います。
migrate:refresh はすべてのテーブルを作り直すため、既存のデータは失われます。
開発中のデータベースリセットに便利です。実践例:postsテーブルの作成
ブログ投稿を管理するposts テーブルを例に、一連の流れを確認します。
1. マイグレーションファイルの生成
2. マイグレーションの編集
database/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php を開いて編集します。
3. マイグレーションの実行
posts テーブルが作成されます。
4. カラムを後から追加する
テーブル作成後に新しいカラムを追加したい場合は、既存のマイグレーションを編集せず、新しいマイグレーションを作成します。マイグレーションイベント
マイグレーション操作のたびにイベントが発行されます。すべてのイベントはIlluminate\Database\Events\MigrationEvent を継承しています。
たとえば
MigrationsEnded イベントをリッスンして、マイグレーション完了後にキャッシュをクリアすることができます。
次のステップ
データベースシーディング
マイグレーションで作成したテーブルにサンプルデータを投入する方法を学びます。
Eloquent入門
マイグレーションで作成したテーブルをEloquent ORMで操作する方法を学びます。