如何在Laravel的层叠上使用Delete

如何在Laravel的层叠上使用Delete

我有一个“角色”表:

$table->increments('id');
$table->string('name')->unique();
$table->text('description')->nullable();


和“ Roles_Users”表:

$table->increments('id');
$table->integer('role_id')->unsigned()->index()->foreign()->references("id")->on("roles")->onDelete("cascade");
$table->integer('user_id')->unsigned()->index()->foreign()->references("id")->on("users")->onDelete("cascade");


当我运行这样的一行时:

Role::where('name','someString')->delete();


仅删除了Roles表中的相关行,而不会删除Roles_Users表中的相关行。解决办法是什么?

最佳答案

我建议您为这种情况创建一个“外键”约束(如其他人所述)。同样因为这是一个多对多关系,所以可以在Eloquent模型上使用detach()方法(如果在userrole模型中正确地建立了关系)

$user = App\User::find(1);

// Detach all roles from the user...
$user->roles()->detach();


您可以与more details的文档相关。

关于php - 如何在Laravel的层叠上使用Delete?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38350036/

10-10 16:49