2017-12-21 7 views
1

です:外部キー制約が正しく形成されlaravel

public function up() 
{ 
    Schema::create('notes', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('user_id')->unsigned()->index(); 
     $table->integer('card_id')->unsigned()->index(); 
     $table->text('body'); 
     $table->timestamps(); 
     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
     $table->foreign('card_id')->references('id')->on('card')->onDelete('cascade'); 
    }); 
} 


public function up() 
{ 
    Schema::create('users', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('username'); 
     $table->string('email'); 
     $table->string('password'); 
     $table->timestamps(); 
    }); 
} 

public function up() 
{ 
    Schema::create('cards', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('title'); 
     $table->timestamps(); 
    }); 
} 

私はちょうど何かを試してみました、私は私は何をすべきかわからない[私はラベールの初心者です]

答えて

0

(あなたがcard代わりcardsの持っています)外部キーエラー

  1. の変更は、ユーザーの移行ファイルのタイムスタンプは、それが実行されるので:それは(まだ)存在していないので、それはのは

    Laravelが順番に移行するので、これを修正するための2つのハックがあるユーザーテーブルを見つけることができます最初に

  2. ハッキングは、外部キー関係のために完全に別の移行を行うことです。その後、最後に実行するようにタイムスタンプを変更します。あなたは私の問題を解決し、すべてのテーブルがあなたがFK移行
+0

ありがとうありがとう、お客様に –

+0

何ら問題は感謝しません。受け入れられた答えとupvoteとしてマークしてください。乾杯!幸せなコーディング... –

0

cardsusersのテーブルは、移行ファイルの日付と時刻を変更する必要がありますnotesより前に作成されました。

+1

を実行する時点で存在しています知っているこの方法では、あなたは私の問題を解決し –

0

notesより先にcardsusersが作成されていることを確認してください。代わりに加えて

$table->foreign('card_id')->references('id')->on('card')->onDelete('cascade'); 

使用:

$table->foreign('card_id')->references('id')->on('cards')->onDelete('cascade'); 

したがって、あなたのノートテーブルはユーザーテーブルの前に作成されている基本的

+0

、あなたは私の問題を解決し –

関連する問題