2016-06-22 14 views
1

への外部キー参照を追加することができなければならない、私はテーブルを作成するには、次の移行コードを持つテーブル食品、メニューは、2つを持っているは私は3つのテーブルメニュー、食品、menu_foodを持つピボットテーブル

$table->increments('id'); 
$table->timestamps(); 
$table->integer('food_id'); 
$table->integer('menu_id'); 

をmenu_food増分ID。

私はfood_idとmenu_idに外部キーを追加するべきですか?メニューテーブルと食べ物テーブルのIDを参照してください。

-----更新------
はい、あなたのようにforeignキーを追加する必要があり、私は答えを試みたが、エラー

PHPの業者が

[Illuminate\Database\QueryException] 
    SQLSTATE[HY000]: General error: 1005 Can't create table `laravel_foodcall`. 
    `#sql-198c_1e1` (errno: 150 "Foreign key constraint is incorrectly formed") 
    (SQL: alter table `menu_food` add constraint `menu_food_food_id_foreign` f 
    oreign key (`food_id`) references `food` (`id`)) 



    [PDOException] 
    SQLSTATE[HY000]: General error: 1005 Can't create table `laravel_foodcall`. 
    `#sql-198c_1e1` (errno: 150 "Foreign key constraint is incorrectly formed") 
+0

はい:)それは必要なく、キーがインデックスされているので、クエリが速くなりますされていません。 –

+0

データベースエンジンにも自動インクリメントジョブを許可することをお勧めします。 制約を追加し、id以外のすべてのパラメータを渡すと、次のautoになります。 – JoelBonetR

+0

外部キーの追加方法を教えてください。列を ' - > unsigned()'にするのを忘れないでください。 –

答えて

2

を移行しましたそれぞれのテーブルidを参照してください。このような何か:

$table->foreign('food_id')->references('id')->on('food'); 
$table->foreign('menu_id')->references('id')->on('menu'); 

あなたはLaravelのマニュアルを参照してくださいすることができますhere.

+0

うまく動作するためには外部キーは必要ありません。それをお勧めします。 –

+0

私はあなたの答えを試しましたが、うまくいきません – hkguile

+0

はい、前の表の符号なしを使用した場合は、それも使用する必要があります。 ' - > unsigned();' unsigned'を使います。 –

関連する問題