相关疑难解决方法(0)

Laravel外键onDelete('cascade')无效

我在用户和角色之间存在多对多关系,并且有一个role_user表.我的迁移设置如此(简化):

users 表:

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

roles 表:

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

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');
    });
}
Run Code Online (Sandbox Code Playgroud)

因此,根据文档,我将外键设置为unsigned.

现在,我添加了几个用户,并附加了一些角色 - 一切正常.但是,当我删除user(User::destroy(2))时,role_user表中该用户的行不会被删除,这会导致冗余行.

我究竟做错了什么?

  • MySQL + InnoDB

编辑:抓取模型和应用->delete();也具有相同的效果.

sql foreign-key-relationship laravel eloquent

7
推荐指数
4
解决办法
5912
查看次数

标签 统计

eloquent ×1

foreign-key-relationship ×1

laravel ×1

sql ×1