2017-06-07 14 views
0

グループテーブルから行を削除すると、group_userテーブルからすべての関係マッピングも削除されます。たとえば、id 4のグループを削除すると、group_id 4のgroup_userテーブルのすべての行も削除されます。以下の表:Laravel 5.4関連テーブルの行と行を削除する

Schema::create('users', function (Blueprint $table) { 
 
      $table->increments('id'); 
 
      $table->string('name'); 
 
      $table->string('email')->unique(); 
 
      $table->string('password'); 
 
      $table->string('phone'); 
 
      $table->boolean('approved')->default(false); 
 
      $table->rememberToken(); 
 
      $table->timestamps(); 
 
     }); 
 
Schema::create('groups', function (Blueprint $table) { 
 
      $table->increments('id'); 
 
      $table->string('name'); 
 
      $table->integer('course_id'); 
 
      $table->timestamp('start_date')->nullable(); 
 
      $table->timestamp('end_date')->nullable(); 
 
      $table->timestamps(); 
 
     }); 
 
    Schema::create('group_user', function (Blueprint $table) { 
 
      $table->increments('id'); 
 
      $table->integer('user_id'); 
 
      $table->integer('group_id'); 
 
      $table->timestamps(); 
 
     });

現在、グループコントローラでこの機能を使用して、それが唯一のグループテーブルから削除します。

function deleteGroup($id){ 
 
\t \t $group = Group::find($id); 
 
\t \t $group->delete(); 
 
\t \t return redirect()->back(); 
 
\t }

+1

私はあなたには、いくつかの定義がようしたいと思います: '$卓上>外国人( 'USER_ID') - >参照( 'ID') - >( 'gropu')上 - > onDelete( 'カスケード'); ' – mkaatman

+0

@mkaatmanごめんなさいあなたのコメントは見ませんでした;)あなたのコメントは正しい解決策だと思います。 –

答えて

1

あなたのテーブルのストレージエンジンの場合あなたはあなたのマイグレーションで正しい関係を設定しようとすることができますすべてがデータベース層で行われます。

Schema::create('group_user', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('user_id'); 
     $table->integer('group_id'); 
     $table->timestamps(); 

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

私のデータベースはmariadb、それはまだ動作しますか?ありがとう – Benua

+0

InnoDBはデータベース管理システム(MySQL、MariaDB)のストレージエンジンですが、デフォルトではlaravelと誤解されていない限り、innoDBを移行用に使用します。 –

関連する問題