Laravel Enum Migrations: How to Define and Use Enums in Laravel Database Migrations


まず、Enumを使用するためには、Laravel Enumパッケージをインストールする必要があります。以下のコマンドを使用して、パッケージをインストールします。

composer require benSampo/laravel-enum

パッケージがインストールされたら、Enumを定義する準備が整います。Enumクラスを作成し、列挙する値を定義します。例えば、StatusEnumという名前のEnumを作成し、"active"と"inactive"の2つの値を定義する場合、以下のようなコードを書きます。

namespace App\Enums;
use BenSampo\Enum\Enum;
final class StatusEnum extends Enum
{
    const Active = 'active';
    const Inactive = 'inactive';
}

Enumクラスでは、BenSampo\Enum\Enumクラスを継承し、列挙する値を定数として定義します。

次に、マイグレーションファイルでEnumを使用します。例えば、usersテーブルにstatus列を追加し、その列をEnumとして定義する場合、以下のようなマイグレーションファイルを作成します。

use App\Enums\StatusEnum;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddStatusColumnToUsersTable extends Migration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->enum('status', StatusEnum::class)->default(StatusEnum::Active);
        });
    }
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropColumn('status');
        });
    }
}

上記の例では、enumメソッドを使用してstatus列を定義し、Enumクラス名とデフォルト値を指定しています。

マイグレーションを実行するには、以下のコマンドを使用します。

php artisan migrate

これにより、usersテーブルにstatus列が追加されます。

以上が、LaravelでEnumを定義し、データベースマイグレーションで使用する方法の一例です。Enumを使用することで、列挙された値の範囲内でのデータの整合性を保つことができます。詳細な使い方や他の方法については、Laravel Enumパッケージのドキュメントを参照してください。