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

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以上です。
お疲れさまでした。


