gpt4 book ai didi

sql - Laravel 外键 onDelete ('cascade' ) 不起作用

转载 作者:行者123 更新时间:2023-12-04 09:40:19 33 4
gpt4 key购买 nike

我有一个用户和角色之间的多对多关系,有一个 role_user 表。我的迁移设置如下(简化):
users table :

public function up()
{
Schema::create('users', function(Blueprint $table)
{
$table->increments('id');
$table->string('email')->unique();
});
}
roles table :
public function up()
{
Schema::create('roles', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
});
}
role_user table :
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();也有同样的效果。

    最佳答案

    尝试创建此表时尝试设置。这个修复对我有用。

    $table->engine = 'InnoDB';

    我已经提交了一个错误: https://github.com/laravel/framework/issues/8730

    关于sql - Laravel 外键 onDelete ('cascade' ) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24897300/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com