PHP/Laravel

Laravel 테이블에 복합키로 Unique 속성 주기

DSeung 2022. 7. 22. 16:55

Larvel에서 Migration을 작성할 때 단일 칼럼에 대한 Unique 속성이 아닌 

여러 개의 컬럼을 대상인 복합키로 Unique 속성을 줘야 할 경우 아래처럼 사용이 가능합니다.

 

기존처럼 단일 컬럼에 Uniuqe를 부여하는 것이 아닌

    public function up()
    {
        Schema::create('테이블 명', function (Blueprint $table) {
            $table->id();
            $table->foreignId('participant_id')->comment('참여자 아아디')->unique();
            $table->foreignId('product_id')->comment('상품 아아디');
            $table->timestamp('created_at')->index()->comment('참여 일시')->unique();
        });
    }

 

아래와 같이 $table->unique()을 통해 복합키로 unique 속성을 줄 수 있습니다.

    public function up()
    {
        Schema::create('테이블 명', function (Blueprint $table) {
            $table->id();
            $table->foreignId('participant_id')->comment('참여자 아아디');
            $table->foreignId('product_id')->comment('상품 아아디');
            $table->timestamp('created_at')->index()->comment('참여 일시');
            $table->unique(['participant_id','created_at']);
        });
    }

이로써 이 테이블은 participant_id와 created_at이 둘 다 동일한 컬럼이 존재할 수 없습니다.

반응형