【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 IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

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('id')で、カラム名をidとして、自動で符号なし整数が割り振られるプライマリキーのカラムを追加。
  • timestamps()で、カラム名をcreated_atとupdated_atとして、タイムスタンプのカラムを追加。

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

今回の例では、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('name')で、カラム名をnameとして、文字列をセットできるカラムを追加。
  • date('date')で、カラム名をdateとして、日付をセットできるカラムを追加。
  • string('img')で、カラム名をimgとして、文字列をセットできるカラムを追加。またnullable()でNULL値を許可。
  • unsignedInteger('age')で、カラム名をageとして、符号なし整数をセットできるカラムを追加

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

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

上記ファイルを作成後、以下のコマンドでマイグレーションを行うことで、新規テーブルを作成できます。

php artisan migrate

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

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

php artisan migrate:status

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

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

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

参考サイトなど

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

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。
Twitterで返信する場合はこちらから。

また、コメントは承認制となります。