2016-03-12 5 views
8

外部キー制約を追加し、Laravel 5.2を設定し、そのが正常に動作することはできませんLaravel 5.2エントラスト、エラーを移行(など<code>roles</code>、<code>permissions</code>テーブルを作成するための)このコマンド<code>php artisan migrate</code>を実行している間<code>User ACL</code>のために、私は次のエラーを取得<code>zizaco/entrust</code>パッケージをインストールし、私がインストールさ

[Illuminate\Database\QueryException] SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table role_user add constraint role_user_user_id_foreign foreign key (user_id) references `` (id) on delete cascade on update cascade)

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

何らかの理由が考えられますか?私は何かを欠いている? site

答えて

17

私はこの問題を解決しました。委任移行ファイルには、usersテーブル名がありませんでした。

$table->foreign('user_id')->references('id')->on('users')->onUpdate('cascade')->onDelete('cascade');

私は usersテーブル名を追加し、問題は修正され、

$table->foreign('user_id')->references('id')->on(' ')->onUpdate('cascade')->onDelete('cascade');

は、だから私はこれに変更行以下を参照してください。

なぜこの問題が発生したのですか? config/auth.phpファイル内

、プロバイダの配列に言及'table'=>'users'キー/ペアは以下を参照してください、ありませんでしたが(これはデフォルトで、新鮮なlaravelがインストールされている場合を意味します)

'providers' => [ 
    'users' => [ 
     'driver' => 'eloquent', 
     'model' => App\User::class, 
    ], 

php artisan entrust:migrationコマンドの実行中に、それが引っ張ります上記プロバイダの配列のテーブル名がusersの場合、マイグレーションファイルに記載されているテーブルがない場合、このように空の関係が設定されます。

$table->foreign('user_id')->references('id')->on('')->onUpdate('cascade')->onDelete('cascade');

このように、プロバイダの配列にテーブルを追加します。

'providers' => [ 
    'users' => [ 
     'driver' => 'eloquent', 
     'model' => App\User::class, 
     'table'=>'users' 
    ], 

おまかせ移行php artisan entrust:migrationのためのその実行コマンドの後に、これは適切な移行ファイルを生成します。

1

同じ移行で外部キーを追加しようとしているときに同じエラーが発生することがあります(同じSchema::createブロック)。

Schema::create(... 
    ... 
    $table->integer('categories_id')->unsigned(); 
    ... 
}); 

そして私は、外部キーとして、この列を設定しています同じファイルに:

Schema::table('sub_categories', function (Blueprint $table) { 
    $table->foreign('categories_id')->references('id')->on('main_categories'); 
}); 

それは完璧に動作私は新しい列を作成してい移行を作成していた場合。

希望すると、これが役立ちます。

関連する問題

 関連する問題