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()項目を適宜書き換える必要が出てきます。