Laravel学習帳

Laravel5.2の学習帳です。開発環境はXAMPP for Windows 5.6.19 / 本番環境はさくらサーバー(スタンダード)

基礎知識

マイグレーション機能を使ってDBのTABLEを作成

2016/12/02

migration01

前回、DBの接続設定をしました。

データベースの作成と設定

今回はLaravelのmigration(マイグレーション)機能を使ってDBのTABLEを作成します。

マイグレーション機能はフレームワーク初心者の方だと一見、面倒に感じます。

ただ、この機能を使うことで特定のデータベースの文法に依存せずにテーブルへ行なう操作を記述できます。

また変更を実施したり元に戻すといった作業も簡単に行なえるようになります。

 

マイグレーションとは

まず、マイグレーション(migration)とは何でしょうか?

通常テーブルを新規に作成するには必要なSQL文を直接実行して作成します。

create table user_table(
id int,
username varchar(255),
email varchar(255),
password char(30)
);

それに対してマイグレーションを使う場合はまず、マイグレーションファイルと呼ばれるスクリプトファイルを作成し、テーブルの新規作成やカラムの追加はこのスクリプトファイルに記述していきます。

migration01

スクリプトファイルはLaravelで決められた文法で記述するのですが、使用しているデータベースがMySQLであってもSQLiteであっても同じ記述で対応できます。

 

マイグレーションファイルの作成と編集方法

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

マイグレーションファイルは artisan make:migration コマンドで作成します。

テーブルを作成する場合はcreateオプションを指定します。

#環境開発がXAMPPの場合はコマンドプロンプトで実行
php artisan make:migration マイグレーション名 --create=table名

マイグレーション ファイルは database/maigrations フォルダに作成されます。

実行順がわかるように自動でファイル名にタイムスタンプが付与されます。

例えばこんな感じです。

 2016_09_07_133821_create_articles_table.php 

 

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

作成されたマイグレーションファイルを開きます。

<?php
// 2016_09_07_133821_create_articles_table.php

use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

class CreateArticlesTable extends Migration {

  public function up()
  {
  Schema::create('articles', function(Blueprint $table)
  {
  $table->increments('id');
  $table->timestamps();
  });
  }

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

}

ここで注目するのがupメソッドとdownメソッドです。

upメソッドは新しいテーブル、カラム、インデックスをデータベースに追加するために使用します。

一方のdownメソッドはupメソッドが行った操作を元に戻します。

upメソッドの中にはデフォルトでidとタイムスタンプの項目が定義されています。

 

ArtisanコマンドによるDBへの反映

編集したマイグレーションファイルをDBに反映させるにはArtisanコマンドを実行させる必要があります。

php artisan migrate

DBのTABLEの作成やカラムの追加はこのように行います。

 

チュートリアル

以前、入力したデータを表示する簡単なフォームを作成しました。

入力した内容を表示する簡単なフォームを作成

今回はこのフォームにいれるDBのTABLEをマイグレーション機能を使って作成します。

 

実現したいこと

  • マイグレーション機能を使ってTABLEの作成

 

手順

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

コマンドプロンプトを開いてLaravelのプロジェクトフォルダまで移動します。

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

greeting というTABLE名を作成したいので--createオプションにgreetingsと指定します。(※テーブル名は慣例的に複数形で命名します。)

php artisan make:migration create_greeting_table --create=greetings

2016_09_07_033426_create_greeting_table というマイグレーションファイルが作成されました。

migration02

 

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

作成されたマイグレーションファイル(2016_09_07_033426_create_greeting_table)は

database/migrationsフォルダに作成されます。

このマイグレーションファイルを編集します。

<?php
// 2015_02_22_133821_create_articles_table.php

use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

class CreateArticlesTable extends Migration {

  public function up()
  {
  Schema::create('articles', function(Blueprint $table)
  {
  $table->increments('id');
  $table->string('onamae');
  $table->timestamps();
  });
  }

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

}

upメソッドのスキーマビルダーに $table->string('onamae'); を追加しました。

 

3. マイグレーションの実行

編集したマイグレーションファイルをMysqlに反映させるために再びArtisanコマンドでマイグレーションを実行します。

再びコマンドプロンプトに戻り以下のコマンドを実行します。

php artisan migrate

 

4. TABLEが作成されたか確認

XAMPPについているphpMyAdminを開いてTABLEがちゃんとできているか確認します。

migration03

コマンドプロンプトでの確認だと下の画面みたいになります。

migration05

上のように確認できたらOKです。

 

-基礎知識