go - 保存父项时自动删除子记录

标签 go go-gorm

假设我有下表

type User struct {
    ID        int
    Name      string
    Addresses []*Address
}
type Address struct {
    ID      int
    UserID  int
    Address string
}

我有 1 个用户在 DB 上有 2 个地址
User{
  ID: 1,
  Name: "sample",
  Addresses: []*Address{
    &Address{ID: 10, UserID: 1, Address: "addr1"},
    &Address{ID: 11, UserID: 1, Address: "addr2"} // <- want to delete it
  }
}

如果我从用户地址 slice 中删除第二个地址并保存用户实体,
DB上仍然存在第二个地址...

有没有办法在保存 parent 时删除 child ?

最佳答案

您确定要保存的那个,在同一个条目上更新或创建为不同的条目。在对该特定用户的删除操作中,您可能还需要为该用户更新操作,即完全删除该地址列并使用该地址进行更新可能有效。我不熟悉 gorm 框架,但是有些操作不能直接在 orm 框架中完成,我们需要运行显式查询来执行相同的操作,并且大多数 orm 框架都提供了运行 db 查询的选项。

关于go - 保存父项时自动删除子记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59099137/

相关文章:

arrays - 为什么结构数组比较有不同的结果

go - 在 Go 中引用 GORM 自动生成的字段

go - 如何使用 GORM 一次一行读取 SQLite 数据库

html - Golang & Martini 代码块

struct - 通过值或指针访问另一个结构

mysql - 覆盖gorm中的外键和引用

go - Go lang GORM中的 “sql:” -“”代表什么?

postgresql - 如何创建一个在列中包含 slice 的表

go - 如何在 MacOS 上制作 wxWidgets(使用 golang)重绘窗口?

go - 是否可以在不添加接口(interface)的情况下 stub /模拟函数调用?