Chave estrangeira do Laravel onDelete ('cascade') não está funcionando
Eu tenho um relacionamento muitos para muitos entre Usuário e Função, com uma tabela role_user. Minhas migrações estão configuradas da seguinte maneira (simplificadas):
users
mesa:
public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('email')->unique();
});
}
roles
mesa:
public function up()
{
Schema::create('roles', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
});
}
role_user
mesa:
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');
});
}
De acordo com os documentos, defino minhas chaves estrangeiras como não assinadas.
Agora, adiciono alguns usuários e anexo algumas funções - tudo funciona bem. No entanto, quando eu excluo um usuário (User::destroy(2)
) as linhas para esse usuário norole_user
A tabela não é excluída, o que está causando linhas redundantes.
O que estou fazendo errado?
MySQL + InnoDBEDIT: Agarrando o modelo e aplicando->delete();
também tem o mesmo efeito.