gpt4 book ai didi

go-gorm - Gorm 中的级联删除不会删除关联表

转载 作者:行者123 更新时间:2023-12-05 02:42:15 50 4
gpt4 key购买 nike

我是 Gorm 的新手。我正在尝试进行级联删除,如果我删除一个用户,则与该用户关联的角色(属于)、个人资料(有一个)和书籍(一对多)也将被删除。

我在下面设置了我的模型,但级联似乎不起作用。当我删除我的用户时,角色、配置文件和书籍仍保留在数据库中,而不是被删除/软删除。

谁能指出我哪里做错了?谢谢

用户模型

type User struct {
gorm.Model
Name string `json:"name"`
Age uint `json:"age"`
Profile Profile `gorm:"constraint:OnDelete:CASCADE;"`
RoleID int `json:"role_id"`
Role Role `gorm:"constraint:OnDelete:CASCADE;"`
Books []Book `gorm:"constraint:OnDelete:CASCADE;"`
}

type Book struct {
gorm.Model
Title string `json:"title"`
UserID uint `json:"user_id"`
}

type Profile struct {
gorm.Model
Country string `json:"country"`
UserID uint `json:"user_id"`
}

type Role struct {
ID int
Name string `json:"name"`
}

最佳答案

当使用 gorm.Model 时,或者更具体地说,当您的模型具有 gorm.DeletedAt 类型的字段时,GORM 使用 soft delete .也就是说,记录实际上并没有被删除,只是上述字段被更新,并且记录通常被排除在查询结果之外。因此,不会触发级联删除。

您可以使用 Unscoped 找到并实际上删除软删除的对象方法。或者,更改您的模型,使其不受软删除的影响。

关于go-gorm - Gorm 中的级联删除不会删除关联表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67749708/

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