go - 保存父项时自动删除子记录
问题描述
假设我有下表
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
}
}
如果我从用户地址切片中删除第二个地址并保存用户实体,
则第二个地址仍然存在于数据库中......
有没有办法在保存父母时删除孩子?
解决方案
您确定要保存的那个,在同一个条目上更新或创建为不同的条目。在针对该特定用户的删除操作中,您可能还需要为该用户更新操作,即完全删除该地址列并使用该地址进行更新可能有效。我对 gorm 框架不熟悉,但是有些操作不能直接在 orm 框架中完成,我们需要运行显式查询来执行相同的操作,并且大多数 orm 框架都提供了运行 db 查询的选项。
推荐阅读
- javascript - 添加/更新元标记在角度 6 中不起作用
- javascript - Angular 5 - 管理服务器请求
- dart - 有没有一种方法可以在错误快照后使用刷新指示器刷新 fututre 构建器
- asp.net-mvc - 后台作业是否有任何事件,例如 aspnetboilerplate 启动模板中的 OnCreatingJob?
- python-3.x - 如何在python的新行中分别存储for循环的值?
- c++ - 为什么 Clang 决定在 C++ 中允许指定初始化器?
- r - 数据与 data.table 合并以重复唯一值
- linux - 如何在Linux中根据文件名将文件移动到具有相应名称的文件夹中?
- xml - xsd 和 xml 验证
- java - 如何从当前会话中获取用户角色?