Laravel マイグレーション 調べてみた

Laravelにおけるマイグレーション

Laravelにおけるマイグレーションとは、DBのテーブルを作成したり、テーブルのカラムを変更したりすることです。

PHPコードでマイグレーションファイルを管理することが出来るため、gitでのソースコード管理の一部にマイグレーションの管理も含めることができます。

マイグレーションを行うまでの流れは以下の流れになります。

①マイグレーションファイルの作成

②マイグレーションファイルの編集

③マイグレーション実行

④(必要があれば)マイグレーション差し戻し

①、③、④はコマンド上で実行します。

 

マイグレーションファイルの作成

マイグレーションファイルは以下のコマンドで実行することができます。

php artisan make:migration ファイル名

作成されるファイル例は以下になります。

<?php

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

class AddTestTable extends Migration
{
 public function up() ・・・①
 {
 //
 }

 public function down() ・・・②
 {
 //
 }
}

①upメソッドでテーブルの作成・更新を行います。

②downメソッドでテーブルの差し戻し処理を行います。

 

これで一応マイグレーションファイルが作成されるのですが、ファイル名を「create_テーブル名_table」にすることで、テーブル作成のテンプレートが記述された状態でファイルを作成することができます。

php artisan make:migration create_test_table
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateTestTable extends Migration
{
 public function up()
 {
  Schema::create('test', function (Blueprint $table) { ・・・①
  $table->id();
  $table->timestamps();
  });
 }

 public function down()
 {
  Schema::dropIfExists('test'); ・・・②
 }
}

①後ほど説明するスキーマビルダという仕組みを使って、テーブルの作成を行っています。

ちなみに、①の「create」を「table」にすると指定したテーブルの更新をすることができます。

②rollbackの処理として、テーブルを削除する処理が書かれています。

 

マイグレーションファイルの編集

マイグレーションファイルはスキーマビルダという仕組みを使って記述することができます。

スキーマビルダとは、テーブルやカラムの作成などを簡単に記述することが出来るLaravelの機能になります。

上記の例を用いて説明します。

Schema::create('test', function (Blueprint $table) { 
 $table->id();
 $table->timestamps();
});

このスキーマビルダでは、idとcreated_at,updated_atカラムが含まれたTestテーブルが作成されます。

つまりスキーマビルダでは、$tableに対してカラムタイプを呼び出すことでカラムを作成・更新します。

$table->カラムタイプ(カラム名)

例えば、上記の例にnameカラムを追加したい場合は以下のようになります。

Schema::create('test', function (Blueprint $table) { 
 $table->id();
 $table->string('name');
 $table->timestamps();
});

この例では、カラム名がname、タイプがstringのカラムを作成しています。

カラムタイプとして指定できるものは他にもたくさんあるので、公式ドキュメントをご参照ください。

 

マイグレーション実行

マイグレーションの実行は、以下コマンドを実行します。

php artisan migrate

これで、migrateされていないすべてのマイグレーションファイル内のupメソッドが実行されます。

 

マイグレーション差し戻し

実行したマイグレーションを差し戻ししたい場合は、差し戻しのコマンドを実行します。

そのコマンドがこちらになります。

php artisan migrate:rollback

このコマンドで、直前に実行したマイグレーションファイルのdownメソッドを実行します。

すべてのマイグレーションファイルを差し戻す場合は以下のコマンドを実行します。

php artisan migrate:reset

しかし、こちらのコマンドはDB内すべてのテーブルが削除されてしまうので、注意して実行してください。

 

以上!!!!!!!