[laravel-4] 두 열에서 고유 한 스키마 빌더 laravel 마이그레이션

두 열에 고유 한 제약 조건을 어떻게 설정할 수 있습니까?

class MyModel extends Migration {
  public function up()
  {
    Schema::create('storage_trackers', function(Blueprint $table) {
      $table->increments('id');
      $table->string('mytext');
      $table->unsignedInteger('user_id');
      $table->engine = 'InnoDB';
      $table->unique('mytext', 'user_id');
    });
  }
}

MyMode::create(array('mytext' => 'test', 'user_id' => 1);
// this fails??
MyMode::create(array('mytext' => 'test', 'user_id' => 2);



답변

두 번째 매개 변수는 고유 색인의 이름을 수동으로 설정하는 것입니다. 배열을 첫 번째 매개 변수로 사용하여 여러 열에 걸쳐 고유 한 키를 만듭니다.

$table->unique(array('mytext', 'user_id'));

또는 (조금 깔끔하게)

$table->unique(['mytext', 'user_id']);


답변

간단히 사용할 수 있습니다.

$table->primary(['first', 'second']);

참조 : http://laravel.com/docs/master/migrations#creating-indexes

예로서:

    Schema::create('posts_tags', function (Blueprint $table) {

        $table->integer('post_id')->unsigned();
        $table->integer('tag_id')->unsigned();

        $table->foreign('post_id')->references('id')->on('posts');
        $table->foreign('tag_id')->references('id')->on('tags');

        $table->timestamps();
        $table->softDeletes();

        $table->primary(['post_id', 'tag_id']);
    });


답변

DB::statement("ALTER TABLE `project_majr_actvities`
               ADD UNIQUE `unique_index`(`activity_sr_no`, `project_id`)");


답변