【Laravel】マイグレーションファイルの書き方とコマンドまとめ

~簡単な自己紹介~

  • 嫁と猫3匹と暮らすフルリモートの三十路SE
  • ブリッジSE的なポジションを務めることが多く、チーム運営、顧客折衝、ベンダーコントロールが得意
  • 投資・節約・副業で資産形成中
  • 現在の金融資産は約1,650万円、めざせアッパーマス層(資産3,000万円)

Laravelのマイグレーションファイルの書き方、コマンドなどをメモしていきます。

テーブルの定義

up

Schema::create('table_name', function (Blueprint $table) {
    // ここのカラムやインデックスを書いていく
});

down

Schema::dropIfExists('table_name');

カラムのデータ型の定義

様々なデータ型がありますので、よく使う型だけご紹介します。

文字列型

varchar型

長さが未指定の場合、長さは255になります。

$table->string("column_name");

長さを指定する場合は下記のように記載します。(例:長さ=30)

$table->string("column_name", 30);

整数型

int型

$table->integer("column_name");

int型(Auto Increment)

このデータ型のカラムが自動的に主キーになります。

$table->increments("column_name");

tinyint型

0/1、true/falseなどのフラグ系もtinyint型を使います。

$table->tinyInteger("column_name");

下記の記載でも同じになります。

$table->boolean("column_name");

日付・時刻型

date型

$table->date("column_name");

time型

$table->time("column_name");

datetime型

$table->dateTime("column_name");

その他データ型

json型

$table->json("column_name");

その他の定義・制約など

コメント

テーブルの論理名を設定するなどができます。

$table->string("column_name")->comment("コメント");

デフォルト値

$table->string("column_name")->default("デフォルト値");

NOT NULL制約

NULLを許可する場合

$table->string("column_name")->nullable(true);

NULLを許可しない場合(デフォルトではこちら)

$table->string("column_name")->nullable(false);

ユニーク制約

カラムの後ろにユニーク制約を付ける(単一カラム)

$table->string("column_name")->unique();

ユニーク制約に名前を付けることもできます。

下記の場合、unique_nameという名前で制約が作られます。

$table->string("column_name")->unique("unique_name");

カラムとは別にユニーク制約を付ける(単一カラム)

$table->unique("column_name");

ユニーク制約に名前を付けることもできます。

下記の場合、unique_nameという名前で制約が作られます。

$table->unique("column_name", "unique_name");

カラムとは別にユニーク制約を付ける(複数カラム)

複数カラムのユニーク制約は配列形式でカラムを指定します。

$table->unique(["column_name_1", "column_name_2"]);

ユニーク制約に名前を付けることもできます。

下記の場合、unique_nameという名前で制約が作られます。

$table->unique(["column_name_1", "column_name_2"], "unique_name");

単数であっても配列形式でカラムを指定できますので、個人的には常に配列形式で指定しておくのが無難な気がします。

コマンド

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

php artisan make:migration xxxxx

マイグレーションの実行状況を確認

php artisan migrate:status

マイグレーション実行

php artisan migrate

マイグレーション実行(テーブル全削除してから)

php artisan migrate:fresh

マイグレーション実行(全部ロールバックしてから)

php artisan migrate:refresh

マイグレーション実行(1ファイルのみ)

マイグレーションファイルは1度実行してしまうと、そのあと編集してもすでに実行済みという扱いになり、更新ができません。

そこで、1度ロールバックしてから特定のファイルだけ再実行してあげると、疑似的に差分実行のようなことができます。

(データは消えます)

php artisan migrate:refresh --step=1 --path=/database/migrations/Xxxxx.php

以上です。

お疲れさまでした。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です