我与用户和角色之间有一个多对多的关系,并带有一个role_user表。我的迁移设置如下(简化):
users table:
users
public function up() { Schema::create('users', function(Blueprint $table) { $table->increments('id'); $table->string('email')->unique(); }); }
roles table:
roles
public function up() { Schema::create('roles', function(Blueprint $table) { $table->increments('id'); $table->string('name'); }); }
role_user table:
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'); }); }
因此,根据文档,我将我的外键设置为unsigned。
现在,我添加了几个用户,并附加了一些角色- 一切正常。但是,当我删除一个用户(User::destroy(2))时,该用户在role_user表中的行不会被删除,这导致了多余的行。
User::destroy(2)
我究竟做错了什么?
编辑:抓取模型并应用->delete();也具有相同的效果。
->delete();
尝试创建此表时尝试设置。此修复程序对我有用。
$table->engine = 'InnoDB';
我已经在以下位置提交了错误:https : //github.com/laravel/framework/issues/8730