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 メソッドは省略
}