【Laravel】データベースのテーブルを作成する方法|マイグレーション

PHPフレームワークのLaravelでは、データベースのテーブルの作成・削除などができ、データベースのバージョン管理が行えるマイグレーションという機能があります。

今回は、そのマイグレーションを利用し、新しいテーブルを作成する例となります。

【Laravel】マイグレーションで新しいテーブルを作成する方法

マイグレーションで新規テーブルを作成するには、マイグレーションファイルを作成し、マイグレーション時に実行する処理を追記します。

以下、マイグレーションでテーブルを作成する手順例となります。

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

マイグレーションを行うコマンドは以下となります。作成したマイグレーションファイルは、database/migrationsフォルダ内に追加されます。

php artisan make:migration ファイル名

また、新規テーブルを作成するマイグレーションファイルの場合、以下のいずれかの形式のコマンドを実行してファイルを作成します。

php artisan make:migration create_テーブル名_table
php artisan make:migration ファイル名 --create=テーブル名

今回の例では、作成するテーブルの名前をexamplesとし、以下のコマンドを実行します。

php artisan make:migration create_examples_table

また、作成されるファイル名には、コマンドで指定した名前の前に、ファイルの作成日時が追加されます。

新規テーブルを作成するマイグレーションファイルについて

新規テーブルを作成するマイグレーションファイルは、upとdownメソッド内に基本的な処理が追記された以下のような状態で作成されます。

<?php

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

class CreateExamplesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('examples', function (Blueprint $table) {  
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('examples');
    }
}

upメソッドはマイグレーション時に実行する処理となり、downメソッドはマイグレーションを元に戻す際(ロールバック時)に実行する処理となります。

upメソッド内では、テーブルを作成する処理を、Schemaファサードのcreateメソッドで指定しています。createメソッドの第1引数にはテーブルを名を指定し、第2引数にはテーブルを定義するクロージャを指定します。

第2引数のクロージャは、テーブルを定義するために使用するBlueprintインスタンスを受け取けとり、そのメソッドによって、テーブルを定義します。

上記の場合、examplesテーブルを作成し以下のカラムを追加する処理となります。

  • bigIncrementsメソッドでは、引数に指定した値をカラム名として、自動で符号なし整数が割り振られるプライマリキーのカラムを追加。
  • timestampsメソッドでは、カラム名をcreated_atとupdated_atとして、タイムスタンプのカラムを追加。

downメソッド内では、dropIfExistsメソッドで、引数に指定したテーブルを削除しています。

マイグレーション時の処理を追記

今回の例では、upメソッド内にカラムを追加する処理を、以下のように追記します。

    public function up()
    {
        Schema::create('examples', function (Blueprint $table) {  
            $table->bigIncrements('id');
            $table->timestamps();

            // カラムを追加する処理
            $table->string('name');
            $table->date('date');
            $table->string('img')->nullable();
            $table->unsignedInteger('age');
        });
    }

上記で追記した処理は、以下となります。

  • stringメソッドでは、引数に指定した値をカラム名として、文字列をセットできるカラムを追加。
  • dateメソッドでは、引数に指定した値をカラム名として、日付をセットできるカラムを追加。
  • stringメソッドでは、引数に指定した値をカラム名として、文字列をセットできるカラムを追加。またnullableメソッドは、NULL値を許可。
  • unsignedIntegerでは、引数に指定した値をカラム名として、符号なし整数をセットできるカラムを追加

その他のテーブルを定義するメソッドについては、文末の参考サイトを確認にしてみてください。

マイグレーションを実行するコマンド

上記マイグレーションファイルでテーブルを定義した後、以下のコマンドでマイグレーションを実行することで、新規テーブルを追加できます。

php artisan migrate

マイグレーション済みのファイルを確認する方法

マイグレーション済みのマイグレーションファイルは、以下のコマンドで確認できます。

php artisan migrate:status

マイグレーションを元に戻す場合

また、マイグレーション済みファイルを修正して、もう一度マイグレーションするには、実行したマイグレーションを元に戻す(ロールバック)する必要があります。

マイグレーションのロールバックについては、以下のリンク先を参考にしてみてください。

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。