マイグレーション(新規作成)

2019/03/01

LaravelではマイグレーションでDBを管理します。

マイグレーションとはデータベースのバージョンコントロールのようなものです。

チーム内でスキーマを簡単に更新し共有できるようにしてくれます。

本日はマイグレーションについてのエントリーです。

 

方法

 
手順

 

1)マイグレーションファイルの作成

マイグレーションファイルってのは「どんなテーブルを作るか」というテーブルの設計書です。

まずは、マイグレーションファイルを作成をします。


# 書式
php artisan make:migration {マイグレーションファイル名}

# 例
php artisan make:migration create_users_table

ポイント

オプションで雛型を作成することができます。


# 新規作成の場合
php artisan make:migration create_users_table --create=users

# 更新の場合
php artisan make:migration add_address_to_users_table --table=users

マイグレーションのファイル名はわかりやすい名前にしましょう。

新規作成・・・create_***_table
更新・・・add_***_to_table

上記のコマンドを実行すると、プロジェクトルート以下の database/migrations にファイルが生成されます。

 

2)マイグレーションファイルの編集

生成されたマイグレーションファイルを開くと以下のようになります。


<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePostsTable extends Migration
{
  public function up()
  {
  //
  }

  public function down()
  {
  //
  }
}

up()とdown()に記述していきます。

up()にはテーブルやカラムの定義を記述します。

down()にはロールバック処理を記述します。


public function up()
{
  // Schemaファサードで posts テーブルの作成
  Schema::create('posts', function (Blueprint $table) {

  // カラムを作成していく
  $table->increments('id');
  $table->string('post_body');
  $table->timestamps();
  });
}
public function down()
{
  // テーブル削除(ロールバック)
  Schema::drop('posts');
}

カラムの作成については以下をご参考ください。

 

3)マイグレーション実行

マイグレーションファイルとはテーブルの設計書だと言いました。

設計書を作ったらそれを実行しなければテーブルは作成できません。

この実行にあたるのが「マイグレーション」になります。


php artisan migrate

これでデータベースにテーブルができます。

 

演習

「ER図について」の記事のチュートリアルで

・「部署」テーブル
・「従業員」テーブル

の二つのER図を作成しました。

今回この二つのテーブルをマイグレーションで作成します。

 

カラムの定義

「部署」テーブル(depts)

カラム名 データ型 キー
dept_id int(11) primary key
dept_name varchar(32) -

「従業員」テーブル(employees)

カラム名 データ型 キー
id int(10) auto_increment
dept_id int(11) -
name varchar(32) -

 

手順

1)マイグレーションファイルの作成
2)マイグレーションファイルの編集
3)マイグレーション(実行)
4)確認

 

1)マイグレーションファイルの作成

「部署テーブル」のマイグレーションファイルを作成


php artisan make:migration create_depts_table --create=depts

「従業員テーブル」のマイグレーションファイルを作成


php artisan make:migration create_employees_table --create=employees

 

2)マイグレーションファイルの編集

「部署テーブル」の定義


:
 public function up()
  {
  Schema::create('depts', function (Blueprint $table) {
    $table->integer('dept_id')->primary(); // 主キー追加
    $table->string('dept_name',32);
  });
  }

  public function down()
  {
  Schema::drop('depts');
  }

「従業員テーブル」の定義


:
public function up()
  {
  Schema::create('employees', function (Blueprint $table) {
  $table->increments('id');
  $table->integer('dept_id');
  $table->string('name',32);
  });

  }

  public function down()
  {
  Schema::drop('employees');
:

 

3)マイグレーション(実行)

マイグレーションファイルを実行させます。


$ php artisan migrate

 

4)動作確認

テーブルが作成されているか確認。


$ show tables;

ポイント

実行したマイグレーションは「migrations」テーブル に登録されます。

「部署」テーブルの中身を確認。


desc depts;

「従業員」テーブルの中身を確認。


desc employees;

マイグレーションについては以上です。

本庄マサノリ

仕事でLaravelを使っています。気づいたことや新しい発見など情報を発信していきます。メールはこちら

 

-基礎知識