マイグレーションとは
マイグレーションはデータベースのバージョン管理のようなもの。
マイグレーションを使用してデータベースの変更を行うことにより、データベースの構造変更やデータの追加、変更、削除などの機能を持っており、PHPのスクリプトを使ってテーブルの作成処理などを用意している。
マイグレーションの手順
-
専用のスクリプトファイルの作成
コマンドを使いマイグレーションを記録するためのスクリプトファイルを作成する。 -
スクリプトの記述
スクリプトファイルに、データベース管理の処理を記述する。 -
マイグレーションの実行
マイグレーションを行う場合は、コマンドで実行する。コマンドにより、用意されたマイグレーション用のスクリプトファイルを実行してテーブルの生成や削除などが行える。
マイグレーションファイルの生成
マイグレーションファイル作成は以下のコマンドを実行する。
php artisan make:migration ファイル名
指定んほテーブルを作成するためのマイグレーションファイルが作られる。
マイグレーションファイルはdatabase
フォルダに生成される。
-
upメソッド
テーブルを生成するための記述をする。テーブル作成に関する必要最小限のコードが自動で用意されている。 -
downメソッド
テーブルを削除売るための処理を記述。
この二つのメソッドが、テーブル操作の基本となる。これらはマイグレーションコマンドによっって自動的に呼び出される。
シーディングについて
テーブルを用意しただけでは、レコードは全く用意されていない。
初期状態ではいくつかのダミーレコードを用意しておくと便利になる。
こうした機能をシーディングという。これは、最初から用意しておくレコードシードを作成する機能である。
手順
- シーディングのためのスクリプトファイル(シーダー)を作成。
- スクリプトファイルを編集しシードを追加。
- コマンドでシーディング実行する。
シーディング処理について
シーディング処理は、「Seeder」を継承したクラスとして定義する。「run」メソッドが用意され、そのメソッド内にレコードを作成するための処理を用意する。
シードを作成する
「run」メソッドの中にシードを作成する処理を用意。DB::tanle->insert
を使って、レコードをいくつか作成している。
シーダーファイルの登録
手順によりシーダーファイルは用意できるが、このままでは使えない。作成したファイルが実行されるように、DatabasesSeeder
に登録しておく必要がある。
デフォルトでDatabaseSeeder.phpというファイルが用意されている。シーディングのコマンドで実行されるスクリプトとなる。このファイルの中に各テーブルのシーダーを呼び出す処理を書く。
$this->call(シーダークラス::class)
実行するシーダークラスのclassプロパティを引数にして「call」というメソッドを呼びだす。これはSeederクラスにあるメソッドで、これにより指定したクラスにrunメソッドが呼び出され、シーディング処理が実行されるようになている。
シーディングを実行
php artisan db:seed
コマンドを実行。これでrunが呼び出されて実行するされている。
シーディングが完了したら、テーブルとレコードが用意できているかを確認。
php artisan serve
コマンドでサーバーを起動しアクセスする。
以上がマイグレーションとシーディングの流れとなる。
参考文献)PHPフレームワーク Laravel入門 第2版 掌田 津耶乃