Внешний ключ Laravel onDelete («каскад») не работает

У меня есть отношение многие ко многим между пользователем и ролью с таблицей role_user. Мои миграции настроены так (упрощенно):

users Таблица:

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

roles Таблица:

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

role_user Таблица:

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

Итак, в соответствии с документами, я установил свои внешние ключи без знака.

Теперь я добавляю пару пользователей и прикрепляю некоторые роли - все работает отлично. Тем не менее, когда я удаляю пользователя (User::destroy(2)) строки для этого пользователя вrole_user таблица не удаляется, что приводит к избыточным строкам.

Что я делаю неправильно?

MySQL + InnoDB

РЕДАКТИРОВАТЬ: захват модели и применение->delete(); также имеет тот же эффект.

Ответы на вопрос(2)

Ваш ответ на вопрос