Laravelのマイグレーションで複数カラムにunique制約を設定する方法

以下のように、[]内にunique制約を付けたいカラム名を並べればOK。

マイグレーションファイル


public function up()
{
    Schema::create('favorites', function (Blueprint $table) {
        /*
            複数カラムにunique制約を設定する方法
        */
        $table->unique(['user_id', 'post_id'],    // []内にunique制約を付けたいカラム名を並べる
                       'unique_user_id_post_id'); // 第2引数はindex名(省略可能)
        /*
            【参考】1つのカラムにunique制約を設定するときは以下のような方法で可能
        */
        // $table->integer('column_name')->unique();      //カラム名を設定するときにunique()を記述する
        // $table->unique('column_name');                 //index名を省略した場合、index名は自動で決まる
        // $table->unique('column_name'  , 'index_name'); // カラムが1つのときは[]はなくても良い
        // $table->unique(['column_name'], 'index_name'); // カラムが1つのときに[]を使っても良い
    });
}

詳細はLaravelの日本語ドキュメントを参照。

インデックス – Laravel 5.8 データベース:マイグレーション

https://readouble.com/laravel/5.8/ja/migrations.html#indexes

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です