マイグレーションとシーディングについて理解したいときに読むメモ


マイグレーションとシーディングについて

データベースの内容を自動生成するために用意されているのがマイグレーションとシーディングである.これらを理解することでデータベースを効率的に管理することができるようになる.

マイグレーションとは

データベースを扱うときに,最も注意しなければいけないのが「データベースの構造」である.例えば,データベースを移行したり,環境を移行したりする場合,データベースを一から構造しなければいけない.このとき,全てのデータベースを全く同じ構造で作らなければ,データベース関係は正しく動作しなくなる(何度エラーを吐かれたことか...)

現在,使っているデータベースの構造を確認し,それと全く同じものを再現する仕組みがあれば,データベースの管理はとても楽になる.そのために提供されているのが「マイグレーション」という機能.

マイグレーションは,データベースのバージョン管理機能(だから日時などがファイル名に入るのか!!)である.データベースのテーブルを作成したり,削除したりする機能を持っており,PHP のスクリプトを使ってテーブルの作成処理などを用意している,
このマイグレーション機能を使用して,使用するテーブルなどの作成処理を用意しておけば,環境が変わった場合もコマンド一つでデータベースのテーブルなどを生成することができる,また,テーブルの構造が途中で変わった場合でも古いテーブルを全て削除して最新のテーブルに更新するような作業が簡単に行うことができる.

シーディングとは

テーブルの用意については,マイグレーションを用いてできるようになる.ただ,これだけでは,テーブルに何もレコードは入っていない.初期状態でダミーのレコードがあると便利だよね.これをしてくれるのが「シーディング」機能である.これはシード(最初から用意しておいたレコード)を作成する機能である.

手順について

マイグレーションとシーディングの手順についてのメモ

マイグレーションの手順

⒈ 専用のスクリプトファイルの作成
まず最初に,マイグレーションを記録するためのスクリプトファイルを作成する.これはコマンドを使って,作成できる.

php artisan make:migration ファイル名

⒉ スクリプトの記述
作成されたスクリプトファイルに,データベース管理の処理を記述する.これは,テーブルの生成や削除などの処理を PHP で書くことになる,

xxx_filename.php
public function up(){
    Scheme::create('', function(BluePrint $table){
        テーブル作成処理
    });
}

⒊ マイグレーションの実行
マイグレーションを行う場合,コマンドを使って実行する.コマンドにより,用意されたマイグレーション用のスクリプトファイルを実行してテーブルの生成や削除などが行える.

php artisan migrate

シーディングの手順

⒈ シーディングのためのスクリプトファイルを作成する.これはコマンドで用意できる.

php artisan make:seeder シーダーファイル名

⒉ スクリプトファイルを編集してシードに追加する.
run メソッド内にシードを作成する処理を記述.
DB::insertを用いて,レコードを作成するだけである.

⒊ シーダーファイルの登録
DatabaseSeeder.php というファイルがデフォルトで用意されているので,これを以下のように編集する.

DatabaseSeeder.php
<?php
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    public function run(){
        $this->call(シーダーファイル名::class);
    }
}

⒋ コマンドでシーディングを実行
php artisan db::seed

マイグレーションとシーディングについて

あまり理解してないと,何度かつまづく部分なきがする(僕がそうでした)ので,まとめてみました.今後も色々アップできたらと思います.