2017-06-23 7 views
0

を動作していませんhasMany Vehicleカスケード削除laravelは、私は3つのテーブルを持って使用して削除laravel 5.4</p> <p>に問題がある

...とにかく...車両テーブルのスキーマを作成するとき、私は2つの外部キーを使用します:

$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); 
$table->foreign('post_user_id')->references('user_id')->on('posts'); 

私は投稿を削除したい場合は、削除したい記事に関連するすべての車両....しかし、動作していない(それが制約に関するエラーを与える)

誰かが教えてもらえます私は何が間違っていますか?それは私が2つのforeginキーを使用しているということですか?

+0

制約の誤差はどのようなものですか? –

+0

テーブル間の関係にスキーマ図を追加してください。あなたの説明は不明確です –

+0

@RuChernChong投稿を削除したいとき、エラーは次のとおりです。QLSTATE [23000]:整合性制約違反:1451親行を削除または更新できません。 CONSTRAINT 'vehicles_post_user_id_foreign' FOREIGN KEY(' post_user_id')REFERENCES 'posts'(' user_id')です。 SagarGautamはスキーマです[リンク](https://www.dropbox.com/s/qdsjwkq4tas5jn2/diagram.png?dl=0) 私は、ポストを指している外部キーpost_user_idのbeacuseだと思います表。 – calin24

答えて

0

チェックこの

$table->engine = "InnoDB"; 
+0

InnoDBを使っています...私はmysql btwを使います。私はしようとしていた:車両を削除し、その後、destory関数の投稿を削除します。 lic関数 '$ post = Post :: find($ id); $ post-> vehicles() - > where( 'post_id'、$ id) - > delete(); $ post-> delete(); return redirect() - > route( 'home'); ' – calin24

+0

BTWどこ( 'post_id'、$ id)のための必要はありません。 –

0

使用して外部キーが2つの問題解決:

Schema::create('vehicles', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('mark'); 
     $table->string('model'); 
     $table->integer('weight'); 
     $table->string('vehicle_state'); 
     $table->integer('post_id')->unsigned(); 
     $table->integer('post_user_id')->unsigned(); 
     $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); 
    }); 
関連する問題