【发布时间】:2021-08-08 10:29:39
【问题描述】:
我在用户中有父子关系。
我想删除一个孩子。 但在此之前,我需要删除父母对孩子的所有引用。
我原以为这会起作用 - 但事实并非如此:
$child->superiorUsers()->detach($child->id);
$child->delete();
superiorUsers() 看起来像这样:
public function superiorUsers() { return $this->belongsToMany( 'App\Models\User', 'user_user', 'user_id', 'superior_id' ); }
知道我做错了什么吗?
编辑: 我正在编写 unitTests 来删除用户,但我收到关系仍然存在的错误。
SQLSTATE[23000]:完整性 违反约束:1451 无法删除或更新父行:a 外键约束失败 (
user_user, CONSTRAINTuser_user_user_id_foreign外键 (user_id) 引用users(id)) (SQL: 从users中删除id= xxx)
【问题讨论】:
-
“它不起作用”是什么意思?
-
我正在编写用于删除用户的 uniTests,当我删除用户时,我收到关系仍然存在的错误。我会更新问题谢谢
-
您需要更改 user_user 迁移,以便将
onDelete('cascade')或onDelete('set null')添加到约束或使用雄辩的deleting事件。 -
你是多对多关系,所以不能删除孩子。
标签: php laravel eloquent eloquent-relationship