Laravel-Fremdschlüssel onDelete ('cascade') funktioniert nicht

Ich habe eine Viele-zu-Viele-Beziehung zwischen Benutzer und Rolle mit einer Tabelle role_user. Meine Migrationen sind so eingerichtet (vereinfacht):

users Tabelle:

public function up()
{
    Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('email')->unique();
    });
}

roles Tabelle:

public function up()
{
    Schema::create('roles', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('name');
    });
}

role_user Tabelle:

public function up()
{
    Schema::create('role_user', function(Blueprint $table)
    {
        $table->increments('id');
        $table->integer('user_id')->unsigned();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->integer('role_id')->unsigned();
        $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
    });
}

Also habe ich laut Dokumentation meine Fremdschlüssel auf unsigniert gesetzt.

Jetzt füge ich ein paar Benutzer hinzu und füge einige Rollen hinzu - alles funktioniert einwandfrei. Wenn ich jedoch einen Benutzer lösche (User::destroy(2)) die Zeilen für diesen Benutzer in derrole_user Tabelle werden nicht gelöscht, was zu redundanten Zeilen führt.

Was mache ich falsch?

MySQL + InnoDB

BEARBEITEN: Greifen Sie nach dem Modell und bewerben Sie sich->delete(); hat auch den gleichen Effekt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage