2016-08-10 12 views
0

私は2つのテーブル、伝票と注文を持っています。バウチャーはIDとして16文字の文字列を持つ必要があり、ランダムに作成されます。Laravelで文字列型の外部キーを追加するときのエラー

[Illuminate\Database\QueryException] 
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL 
: alter table `orders` add constraint `orders_voucher_id_foreign` foreign k 
ey (`voucher_id`) references `vouchers` (`id`)) 

[PDOException] 
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint 

そして、ここでは私のテーブルです:IDを整数としてインクリメントされましたが、文字列に変更したとき、私はちょうどそれがこのエラーを取得して、外部キーを追加するために得ることができないとき、すべてが働いていました

Schema::create('vouchers', function (Blueprint $table) { 
     $table->engine = 'InnoDB'; 
     $table->string('id'); 
     $table->integer('value'); 
     $table->string('status'); 
     $table->timestamps(); 
    }); 

    Schema::create('orders', function (Blueprint $table) { 
     $table->engine = 'InnoDB'; 
     $table->increments('id'); 
     $table->integer('user_id')->unsigned(); 
     $table->integer('event_id')->unsigned(); 
     $table->string('voucher_id'); 
     $table->timestamps();  

     $table->foreign('user_id')->references('id')->on('users'); 
     $table->foreign('event_id')->references('id')->on('events'); 
     $table->foreign('voucher_id')->references('id')->on('vouchers'); 
    }); 

フィードバックは本当にありがとうございます。前もって感謝します。

+0

これらのスキーマは、同じファイルまたは異なるファイルにありますか? – aynber

答えて

2

で試してみてください。

$卓上>の文字列( 'ID') - >ユニーク();

+0

初めて仕事をしたとき、あなたは聖xox – frostfat

+0

npを教えてくれました。 –

関連する問題