2017-03-31 4 views
0

私は、次の移行があります。onDelete(「カスケード」)、ピボットテーブルのデータを削除しませ

public function up() 
    { 
     Schema::create('topics_to_subscriptions', function (Blueprint $table) { 
      $table->engine = 'InnoDB'; 
      $table->integer('topic_id')->unsigned(); 
      $table->integer('subscription_id')->unsigned(); 

      $table->foreign('topic_id')->references('id')->on('topics')->onDelete('cascade'); 
      $table->foreign('subscription_id')->references('id')->on('subscriptions')->onDelete('cascade'); 
     }); 
    } 

マイundersatndingがonDelete('cascade')を使用しているとき、私はサブスクリプションを削除した場合、すべての関連するTopicsToSubscriptionsが削除になるということです。

App\Subscription::truncate();を実行すると、すべてsubscriptionsテーブルからすべてのサブスクリプションが正しく削除されますが、データはtopics_to_subscriptionsから削除されます。私は何を間違えているのですか?

答えて

1

外部キーによって参照されるテーブルを切り捨てることはできません。あなたの外来キーが決して正しく適用されたことはないと思います。

https://laravel.com/docs/5.4/migrations#foreign-key-constraints

public function up() 
{ 
    Schema::create('youtube_topics_to_subscriptions', function (Blueprint $table) { 
     $table->engine = 'InnoDB'; 
     $table->integer('topic_id')->unsigned(); 
     $table->integer('youtube_subscription_id')->unsigned(); 

     $table->foreign('topic_id')->references('id')->on('youtube_topics')->onDelete('cascade'); 
     $table->foreign('youtube_subscription_id')->references('id')->on('youtube_subscriptions')->onDelete('cascade'); 
    }); 
} 
関連する問題