en.gはwebサイト制作に関する技術的な情報を発信するサイトです。

Laravel 8.x マイグレーション(migrations)でテーブルを作成する

Laravelのマイグレーションでテーブルを作成する方法について説明します。Laravelで言うところのマイグレーションとはデータベースの操作全般をLaravelの機能で実行することなので、直接SQL文で操作しても結果は一緒ですし特に問題はありません。ただ、なにかとLaravel的に好ましい構造があるようで、ローカルルールも多いので、マイグレーションでテーブルを作成したほうが良いと思ってます。

マイグレーションファイルを生成する

artisanコマンドを使ってマイグレーションファイルを生成します。

create_ + テーブル名称(複数形) + _table

注意点としては、名称部分は複数形にしておくことです。生成されるテーブルはモデルファイルと紐付く仕組みなのですが、モデルファイル名称はテーブル名称の単数形というデフォルトのルールがあるからです。このルールから命名規則が外れる場合は、別途モデルファイル側から対象のテーブル名を指定する必要があります。


php artisan make:migration create_example_names_table

							

artisanコマンドを実行すると、以下ファイルが生成されます。

/database/migrations/yyyy_mm_dd_xxxxxx_create_example_names_table.php

このファイルに生成するテーブルの詳細内容を記述をしていきます。

テーブルの詳細内容を記述する

upエリアに記述していきます。細かい記述のルールは公式サイトを参照してください。timestampsメソッドは自動的にcreated_at と updated_atのカラムを生成します。timestampで生成されるカラム名及びカラムの設定はlaravelの他の機能との親和性があるので、よほどのことが無い限りこの設定を利用したほうがよいでしょう。


	public function up()
	{
		Schema::create("example_names", function (Blueprint $table) {
			$table->id();
			$table->timestamps();
			$table->dateTime("date", $precision = 0);
			$table->string("example", 255);
			$table->decimal("price", $precision = 10, $scale = 10);
		});
	}

							

マイグレーションを実行する

準備ができたらマイグレーションを実行します。上記の記述ですとexample_namesというテーブルに6つのカラムが生成されます。


php artisan migrate

							

修正する場合はロールバックする

思ったようなテーブル構造ではなかった場合は、ロールバック機能を使って元に戻します。


php artisan migrate:rollback

							

ロールバックについての注意事項

ロールバック処理は前回のマイグレーション処理を自動的に元に戻しているわけではなく、マイグレーションファイルのdown()項目を実行しているだけです。生成されたマイグレーションファイルはデフォルトでdown()項目に生成する予定のテーブルを削除する記述がしてありますので、上記の場合は何もせずとも元に戻るのですが、カラムのアップデートなどをマイグレーション機能で行う場合はdown()項目を適宜書き換える必要が出てきます。