マイグレーション

さて、上記のモデル生成で、DB上のmessagesテーブル(自動的に複数形になります)を扱うための Messageモデルが作成されましたが、肝心のmessagesテーブルが存在していません。 そこで、migrationファイルを利用して、messagesテーブルを作成する必要があります。

マイグレーションファイルとは

マイグレーションファイルとは、DBのスキーマ(テーブル設計など)を構築するためのSQLを実行するためのコードが書かれたファイルです。Laravelの場合はphpで書かれています。

マイグレーションファイルを利用することによって、どのようなテーブル設計を行ったかをソースコードとして残しておくことができ、

  • 環境を移行した時にマイグレーションファイルを順番に実行することで元どおりのテーブル設計が再現できる。
  • DBMSを変更した時にスムーズに移行が可能にある。
  • 複数人で開発を行う際に、DB環境の同期が容易になる

といったメリットがあります。

マイグレーションファイルの中身

sample_app/database/migrations/ ディレクトリの中にmigrationファイルが設置されています。

今回生成された

[現在日付]_create_messages_table.php

というマイグレーションファイルを開いてみましょう。

<?php

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

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

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

現在は上記のような状態になっていることが確認できるはずです。

中でも今回は

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

の部分に注目すると、これは

  • messages テーブルを作成する
  • このテーブルでは、AUTO_INCREMENTを設定した主キーのカラムである「id」カラムを持つ
  • このテーブルでは、created_at(作成日時)とupdated_at(更新日時)というカラムを持つ

という意味合いの記述になっています。 つまり、このままでmessagesテーブルを作成すると

  • id
  • created_at
  • updated_at

の3カラムしかないことになってしまいます。

今回は、簡単な掲示板アプリを作成したいので さらに

  • 文字列型(20)のnameカラム
  • 文字列型(100)のbody(本文)カラム

を追加してあげましょう。

先ほどのマイグレーションファイルに追記を行います。

    public function up()
    {
        Schema::create('messages', function (Blueprint $table) {
            $table->increments('id');
            // nameカラム
            $table->string('name', 20);
            // bodyカラム
            $table->string('body', 100);
            $table->timestamps();
        });
    }

このように追記を行なったら、マイグレーションファイルを保存しておきましょう。

データベース用の設定

マイグレーションの実行を行うためには、データベースに接続を行う必要があります。 sample_app/.env (laradock/.env ではないのでご注意ください) を開きデータベースの接続設定を修正しておきましょう。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

上記のような箇所があるので、

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret

と修正しておきましょう。

マイグレーションの実行

作成したマイグレーションファイルを実行するためには、やはりartisanコマンドを利用することになります。

php artisan migrate

上記のコマンドを実行することでマイグレーションが行われ、messagesテーブルが作成されることになります。

results matching ""

    No results matching ""