所以我对Gorm还很陌生,还在玩它,但我似乎不能用删除级联来工作.以下是我的模特:

type Base struct {
    Id string `json:"id" gorm:"type:uuid;primary_key"`
    CreatedAt time.Time `json:"created_at"`
    UpdatedAt time.Time `json:"updated_at"`
}

type User struct {
    Base
    Role     string  `json:"role"`
    Username string  `json:"username" gorm:"unique"`
    Password string  `json:"password"`
    Profile  Profile `gorm:"constraint:OnDelete:CASCADE;"`
}

type Profile struct {
    Base
    UserId string `json:"user_id"`
    Name   string `json:"name"`
    Bio    string `json:"bio" gorm:"default:hello world!"`
    Age    uint8  `json:"age"`
}

一百零七

以下是我如何运行删除操作:

...
id := "my-uuid" // this would be a real value. this is just an example
Database.Where("id = ?", id).Delete(&models.User{})
...

我做错了什么?

谢谢!

Edit: 我意识到了这question点,并试着遵循它,但我似乎无法让它奏效.

推荐答案

如果您使用的是GORM v2,则可以try 使用delete with select删除主对象、其关系和关联对象.应该是这样的:

Database.Select("Profile").Delete(&models.User{ID: id})

Go相关问答推荐

T的Golang通用切片,其中 *T实现接口

Go-Colly:将数据切片为POST请求

使用一元或服务器流将切片从GRPC服务器返回到客户端

Go中的net.SplitHostPort(r.RemoteAddr)安全性

如何在VSCode中为特定的.go文件创建调试配置?

使用Golang的Lambda自定义al2运行时,初始化阶段超时

Makefilego version和read命令

Kafka架构注册表-Broker:Broker无法验证记录

无法从主域访问子域:无Access-Control-Allow-Origin

在嵌套模板中使用变量,它也被定义为 go 模板中的变量?

Gorm 预加载给出了模糊的列错误

Golang 通过接口反映/迭代{}

如何在切片增长时自动将切片的新元素添加到函数参数

获取切片元素的地址是否意味着 Go 中元素的副本?

处理程序后访问 HTTP 请求上下文

Golang 工作池实现意外工作

为什么 go.mod 中的所有依赖都是间接的?

Go:如何通过 GIN-Router 从 AWS S3 将文件作为二进制流发送到浏览器?

Beego - 我需要context.Context而不是 Beego 上下文

有没有一种方法可以确保传递的值具有使用泛型的某些字段?