2017-06-07 7 views
0

Wenn ich eine Zeile aus einer Gruppentabelle lösche, möchte ich, dass die Funktion auch alle Beziehungszuordnungen aus der Tabelle group_user löscht. Wenn ich beispielsweise die Gruppe mit der ID 4 lösche, werden auch alle Zeilen in der Tabelle group_user mit group_id 4 gelöscht. Tabellen unter:Laravel 5.4 Löschen von Tabellenzeilen und Zeilen aus verwandter Tabelle

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(); 
 
     });

Derzeit in dieser Funktion in Gruppensteuerung verwenden, aber es löscht nur aus Gruppen Tabelle:

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

+1

Ich glaube, Sie einige Definition wie wünschen: '$ table-> ausländische ('user_id') -> Referenzen ('id') -> auf ('Gropu') -> onDelete ('Kaskade'); ' – mkaatman

+0

@mkaatman Entschuldigung, ich habe Ihren Kommentar nicht gesehen;) Ich denke, Ihr Kommentar ist richtige Weg Lösung. –

Antwort

1

Wenn Ihre Tabelle Speicher-Engine Geben Sie innodb ein. Sie können in Ihren Migrationen versuchen, korrekte Beziehungen festzulegen und alles wird in der Datenbankschicht durchgeführt.

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

Meine Datenbank ist Mariadb, wird es noch funktionieren? danke – Benua

+0

InnoDB ist eine Speicher-Engine für das Datenbank-Management-System (MySQL, MariaDB), aber wenn ich nicht irre laravel standardmäßig verwenden Sie innoDB für Migrationen. –

Verwandte Themen