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内すべてのテーブルが削除されてしまうので、注意して実行してください。
以上!!!!!!!