首页 > 解决方案 > 保存父项时自动删除子记录

问题描述

假设我有下表

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
  }
}

如果我从用户地址切片中删除第二个地址并保存用户实体,
则第二个地址仍然存在于数据库中......

有没有办法在保存父母时删除孩子?

标签: gogo-gorm

解决方案


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


推荐阅读