マイグレーション(テーブルの新規作成)
Laravel では、マイグレーションと呼ばれる機能を使ってデータベース上にテーブルを作成したり更新することができ、データベースに対する変更等を管理できます。
ここでは、マイグレーション機能を使ってテーブルを作成してみます。
マイグレーションファイルの作成
Laravel でテーブルを定義するには、 まず Artisan コマンドを使ってテーブル名・項目などを定義するためのマイグレーションファイルを作成します。
$ php artisan make:migration [マイグレーションファイル名]
マイグレーションファイル名には、どのような名前を付けてもいいようですが Laravel で作成されたオープンソースプロジェクトなどを参考にすると、新規作成の場合は create_[テーブル名]_table とつけているようです。テーブル名は、複数形の名前を付けます。
しっかりと調べていませんが、 Illuminate\Database\Console\Migrations\TableGuesser を見るとテーブル名を推定しているような部分があります。
preg_match('/^create_(\w+)_table$/', $migration, $matches)
例えば、次のコマンドを実行すると database/migrations 配下に [日時]_create_users_table.php ファイルが作成されます。
$ php artisan make:migration create_users_table
生成されたマイグレーションファイルには、初期定義として次のように記述されています。
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
生成されたクラスには、 up() と down() の2つのメソッドが用意されています。 up() にはテーブルやカラム、インデックスの定義を記述し、 down() には up() メソッドが行った操作を元に戻す処理を記述します。
class CreatePostsTable extends Migration
{
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
}
テーブルの定義が作成出来たら、次のコマンドを実行してデータベースへテーブルを作成します。
$ php artisan migrate
以上でデータベースにテーブルが作成されます。