Laravel 8.27 以降の Laravel のマイグレーションで使える after の書き方があり、これが大変便利なので紹介です。
Laravel は PHP のフレームワークであり、web サイトの制作によく使われます。web サイトには会員機能などでデータベースを扱う時がよくあります。このデータベース定義をプログラムで表現、実行する仕組みにマイグレーションがあります。
このマイグレーションはテーブルの変更にも対応しており、カラムの追加の際に追加する位置を決められます。MySQL でいう次のクエリの様なものを PHP コードで表現できます。これをするとデータベースを直に触る時の視認性がよくなります。
alter table users add email varchar(255) not null comment 'メールアドレス'
以前まではこの SQL に対して 1:1 対応で表現することに囚われていた感がありますが、Laravel 8.27 以降では次の様に書けます。
return new class() extends Migration { { public function up() { \Schema::table('users', function (Blueprint $table) { // ↓の様にこのカラム名の後に新たにカラムを定義する、と書けます。 $table->after('name', function ($table) { $table->string('email')->comment('メールアドレス'); $table->string('password')->comment('パスワード'); }); }); } // down メソッドは省略 }
以前は次の様に各カラムに after メソッドを書く必要があり、増やすカラムが多いほど手間でしたので↑の様にまとめて書けるのは楽です。特に多数のカラムを一度に追加する際は大きく役に立ちます。
return new class() extends Migration { { public function up() { \Schema::table('users', function (Blueprint $table) { $table->string('email')->comment('メールアドレス')->after('name'); // パスワード->after('name') では name, password, email の順になってしまうのでずらす $table->string('password')->comment('パスワード')->after('email'); }); } // down メソッドは省略 }