マイグレーション
さて、上記のモデル生成で、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テーブルが作成されることになります。