[Laravel] データベースマイグレーション
- 2020年5月15日
- 技術情報
Laravelのマイグレーション機能を使用することで、データベースのテーブル構造の反映をスクリプトとしてコマンドラインで実行することが可能になり、保守や変更作業などが簡単にできるようになります。
マイグレーションの作成方法
例として「students」テーブルのマイグレーションを作成したい場合を説明します。
コマンドプロンプトで以下のコマンドを実行します。
php artisan make:migration create_students_table
Created Migration: 2020_05_15_000000_create_students_table_create_students_table
上記コマンドの実行が完了すると、
/database/migrations に「2020_05_15_000000_create_students_table.php」 が生成されます。(「2020_05_15_000000」の部分は実行した日付とタイムスタンプになりますので、実行日時によって変化します。)
自動生成されたコードは以下のようになります。
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateStudentsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('students', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('students');
}
}
上記の自動生成コード内のupファンクション>createメソッドに作成したいテーブル構造にあわせた処理の記述をおこなうことにより、studentsテーブルのマイグレーションが可能になります。
今回は例として、生徒情報の保存用テーブルの作成をおこないますので、以下のように記述をおこないました。
$table->bigIncrements('id');
$table->string('name');
$table->string('email');
$table->string('phone');
$table->timestamps();
上記1行目のbigIncrementsは自動採番(auto increment)を示しています。
5行目のtimestampsにより「created_at」(レコードを作成した日時)と「updated_at」(レコードを更新した日時)の2カラムの自動生成がおこなわれます。レコードの追加時や更新時にはLaravelによって自動的に日時が保存されるようになります。
マイグレーションの実行
以下のコマンドでマイグレーションを実行します。
php artisan migrate
Migrating: 2020_05_15_000000_create_students_table
Migrated: 2020_05_15_000000_create_students_table (0.31 seconds)
マイグレーションをロールバック(最後に実行したマイグレーションを取り消す)したい場合は以下のコマンドを実行します。
migrate:rollback
マイグレーションの実行後、PhpMyAdminなどで確認をおこなうと、該当のテーブルが生成されていることが確認できました。

この時点ではテーブルにはレコードが入っていません。
初期データの投入をおこなうために、Laravelでは「シーダー」(Seeder)と呼ばれる機能があります。次回は「シーダー」(Seeder)の使用方法の紹介をおこないたいと思います。
金曜日担当:nishida
nishida at 2020年05月15日 10:00:02