はじめに
Laravelのマイグレーションはデータベースをコントロールする機能です。
僕だけかもしれませんが、開発していく中でマイグレーションファイルははたまに触るくらいなので毎回ググっていたという経緯から備忘録としてマイグレーションの主な機能についてリスト化していきます。
マイグレーション生成
まずは超基本的なマイグレーションファイルを作成するコマンド
$ php artisan make:migration create_[テーブル名]_table
$ php artisan make:migration create_users_table
このコマンドを実行するとusersテーブルが作成されます。
マイグレーションファイルのオプション
マイグレーションファイルを作成する際に--tableと--createのオプションを指定できます。
例えば、以下のコマンドではオプションがない場合テーブル名が何かわからないので、
--table=usersをつけることで、usersテーブルの雛形を作成してくれます。
$ php artisan make:migration add_votes_to_users_table --table=users
マイグレーション構造
マイグレーションを実行したら、以下のようなファイルが作成されます。
ここではカラムの追加やカラム型・物理名・論理名などを指定できます。
マイグレーションはupとdownのメソッドがあります。
upメソッドは新しいテーブル、カラム、インデックスをデータベースへ追加するために使用します。
downメソッドはupメソッドが行った操作を元に戻します。ロールバックの機能ですね。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
マイグレーション実行
マイグレーション構成を確認できたらマイグレーションを実行します。
$ php artisan migrate
実働環境でのマイグレーション強制
マイグレーションを強制実行するコマンドがあります。
$ php artisan migrate --force
これ使ったことないです。
データ全部飛んじゃうので使うなって新人の頃に強く言われましたね。
例え、使うことがあってもリーダーに確認してからにしましょう。
ロールバック
マイグレーションをロールバックするコマンドもあります。
ロールバックとは巻き戻すという意味で最後に実行したマイグレーション実行を巻き戻してくれます。
$ php artisan migrate:rollback
マイグレーション変更・追加
生成したマイグレーションにカラムを追加したい場合、新たにマイグレーションを生成する必要があります。
例えば、usersテーブルにageカラムを追加したい場合、以下のように書きます。
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->integer('age'); //カラム追加
});
}
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('age'); //カラムの削除
});
}
以上になります!