【Laravel】マイグレーションファイルの after メソッドを簡単に書く

 Laravel 8.27 以降の Laravel のマイグレーションで使える after の書き方があり、これが大変便利なので紹介です。

 Laravel は PHP のフレームワークであり、web サイトの制作によく使われます。web サイトには会員機能などでデータベースを扱う時がよくあります。このデータベース定義をプログラムで表現、実行する仕組みにマイグレーションがあります。

マイグレーション 9.x Laravel

 このマイグレーションはテーブルの変更にも対応しており、カラムの追加の際に追加する位置を決められます。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 メソッドは省略
}
>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG