2016-09-07 28 views
0

私はこのテーブルを持っている:2つの列をユニークなキーとして組み合わせる方法は?

public function up() 
{ 
    Schema::create('edition', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('volume'); 
     $table->text('cover')->nullable(); 
     $table->enum('number', ['1', '2']); 
     $table->timestamps(); 
    }); 
    Schema::table('journal', function(Blueprint $table) { 
     $table->foreign('id_edition')->references('id')->on('edition')->onDelete('cascade')->onUpdate('cascade'); 
    }); 
} 

私は一意のキーとしてカラム容量と番号の組み合わせを作りたかったです。たとえば、データ「ボリューム1、番号1」があり、ユーザーが同じ組み合わせを挿入すると、データが既に存在するというエラーメッセージが表示されます。私がLaravelでこれを行う方法はありますか?

答えて

3

はちょうどあなたが「第1巻を挿入した場合、それは大丈夫たら、この制約は、1 '、番号を設定したことでup()方法

$table->unique(['volume','number']); 

内部に以下のコードが含まれます。しかし、同じことをやろうとすると、エラーが発生します。

条件:

  1. あなたが使用しているいくつかの良いDBMS、あなたが正常にデータベースにこの変更を移行などMySQLなくSQLITE
+0

これと同じボリュームデータを別の番号で挿入することはできますか?私のデータは、「Volume 1、Number 1」と「Volume 1、Number 2」、「Volume 2、Number 1」、「Volume 2、Number 2」のように見えます。 –

+0

もしそうなら、ルールはどのように見えますか? –

+0

あなたはモデルのルールを意味しますか? –

0
また、あなたはフィールド1とフィールド2の組み合わせが持つテーブル内で一意であれば、上記のコードはチェックします。この

'field1' => 'required|unique_with:table_name,field2' 

のような分野のユニークな組み合わせを検証することができますuniquewith-validatorパッケージを使用することができます

指定されたtable_name。

関連する問題