ShimakazeSoft Tech

Python好きの新卒WEBエンジニアが技術記事を執筆するブログ。主にWEB系や機械学習系のことを掲載。

Laravel PHPでのマイグレーションファイルの作成方法

Laravel PHP上でのテーブル定義を行うときに便利なのが、マイグレーションという機能です。

マイグレーションというものを簡易的に説明すると、マイグレーションとはテーブル定義を行える機能のことです。
つまり、データーベース上にテーブルを作成したり、改修したりなどが行える機能のことを言います。マイグレーションという機能は、基本的にどのフレームワークに搭載されています。

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

マイグレーションを行うには、マイグレーションファイルというものを作成しなければいけません。
以下のコマンドでマイグレーションファイルの作成が行えます。

$ php artisan make:migration {マイグレーション名}

マイグレーションファイル名は以下のようにして指定するのが慣例的であり、以下の場合は指定したマイグレーションファイル名のキャメルケースがクラス名となります。

$ php artisan make:migration create_examples_table

上記のコマンドを実行すると、以下のディレクトリのようにdatabase/migrationsに内にマイグレーションファイルが作成されます。

database/
  └── migrations
          └── 2018_06_05_133752_create_examples_table.php

create_examples_tableとファイル名で指定したため、create_examples_tableのキャメルケースであるCeateExamplesTableがクラス名となります。
上記のコマンドで作成されたファイルの中身は以下のようになっています。

<?php
//  2018_06_06_133752_create_examples_table.php
 
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
 
class CeateExamplesTable extends Migration {
 
    public function up()
    {
        //
    }
 
    public function down()
    {
        //
    }
 
}

upメソッドの中にテーブル作成時の処理を記述していき、down() メソッドの中にはテーブル削除時の処理を記述していきます。


また以下のコマンドのように-createオプションを指定することで、作成するテーブル名を指定することが可能です。
ちなみにテーブル名は複数形にして命名することが慣例的となっています。

$ php artisan make:migration create_examples_table --create=examples

上記コマンドを実行すると、以下のような内容でマイグレーションファイルが作成されます。
Schema::createから始まるスキーマビルダーが指定されて出力されます。

<?php
// 2018_06_06_133752_create_examples_table.php
 
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
 
class CeateExamplesTable extends Migration {
 
    public function up()
    {
        Schema::create('examples', function(Blueprint $table)
        {
            $table->increments('id');
            $table->timestamps();
        });
    }
 
    public function down()
    {
        Schema::drop('examples');
    }
 
}

マイグレーションを実行

スキーマビルダーにフィールドを追加していき、テーブル定義を行なっていきましょう。
以下のようにstring型(文字列型)のtitleフィールドと、interger型(整数型)のnumberフィールドを指定します。

<?php
// 2018_06_06_133752_create_examples_table.php
 
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
 
class CeateExamplesTable extends Migration {
 
    public function up()
    {
        Schema::create('examples', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('title');
            $table->integer('number');
            $table->timestamps();
        });
    }
 
    public function down()
    {
        Schema::drop('examples');
    }
 
}

スキーマビルダーの指定の仕方などの詳細は以下に詳しく載っています。
スキーマビルダー 5.0 Laravel


以下のコマンドを実行することでマイグレーションが実行され、実際にexamplesテーブルが作成されます。

$ php artisan migrate

Migrated: 2018_06_06_133752_create_examples_table