#マイグレーションとシーディングについて
データベースの内容を自動生成するために用意されているのがマイグレーションとシーディングである.これらを理解することでデータベースを効率的に管理することができるようになる.
##マイグレーションとは
データベースを扱うときに,最も注意しなければいけないのが「データベースの構造」である.例えば,データベースを移行したり,環境を移行したりする場合,データベースを一から構造しなければいけない.このとき,全てのデータベースを全く同じ構造で作らなければ,データベース関係は正しく動作しなくなる(何度エラーを吐かれたことか...)
現在,使っているデータベースの構造を確認し,それと全く同じものを再現する仕組みがあれば,データベースの管理はとても楽になる.そのために提供されているのが「マイグレーション」という機能.
マイグレーションは,データベースのバージョン管理機能(だから日時などがファイル名に入るのか!!)である.データベースのテーブルを作成したり,削除したりする機能を持っており,PHP のスクリプトを使ってテーブルの作成処理などを用意している,
このマイグレーション機能を使用して,使用するテーブルなどの作成処理を用意しておけば,環境が変わった場合もコマンド一つでデータベースのテーブルなどを生成することができる,また,テーブルの構造が途中で変わった場合でも古いテーブルを全て削除して最新のテーブルに更新するような作業が簡単に行うことができる.
##シーディングとは
テーブルの用意については,マイグレーションを用いてできるようになる.ただ,これだけでは,テーブルに何もレコードは入っていない.初期状態でダミーのレコードがあると便利だよね.これをしてくれるのが「シーディング」機能である.これはシード(最初から用意しておいたレコード)を作成する機能である.
#手順について
マイグレーションとシーディングの手順についてのメモ
##マイグレーションの手順
⒈ 専用のスクリプトファイルの作成
まず最初に,マイグレーションを記録するためのスクリプトファイルを作成する.これはコマンドを使って,作成できる.
⒉ スクリプトの記述
作成されたスクリプトファイルに,データベース管理の処理を記述する.これは,テーブルの生成や削除などの処理を PHP で書くことになる,
public function up(){
Scheme::create('', function(BluePrint $table){
テーブル作成処理
});
}
⒊ マイグレーションの実行
マイグレーションを行う場合,コマンドを使って実行する.コマンドにより,用意されたマイグレーション用のスクリプトファイルを実行してテーブルの生成や削除などが行える.
##シーディングの手順
⒈ シーディングのためのスクリプトファイルを作成する.これはコマンドで用意できる.
⒉ スクリプトファイルを編集してシードに追加する.
run メソッド内にシードを作成する処理を記述.
DB::insertを用いて,レコードを作成するだけである.
⒊ シーダーファイルの登録
DatabaseSeeder.php というファイルがデフォルトで用意されているので,これを以下のように編集する.
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run(){
$this->call(シーダーファイル名::class);
}
}
⒋ コマンドでシーディングを実行
#マイグレーションとシーディングについて
あまり理解してないと,何度かつまづく部分なきがする(僕がそうでした)ので,まとめてみました.今後も色々アップできたらと思います.