1
1

More than 3 years have passed since last update.

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

Posted at

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

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

マイグレーションとは

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

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

マイグレーションは,データベースのバージョン管理機能(だから日時などがファイル名に入るのか!!)である.データベースのテーブルを作成したり,削除したりする機能を持っており,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

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

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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1