go - 如何为实体 A 设置结构标记可能在 GORM 中有 B 并使创建和预加载自动工作
问题描述
考虑我有BaseNotification
和ExtendedNotification
结构。
对于某些通知,他们base_notificaion
只使用表格,但其中一些会将一些额外的数据保存到extended_notificaion
.
如何在这两个结构中设置结构标记,以便在我运行时
db.Create(&entendedNotification) // or something else
如果需要,GORM 会知道它需要插入一个新元组extended_notification
(例如它不是nil
或字段已填充)
当我打电话时
db.Preload(`ExtendedNotification`).Find(¬ifications)
它会相应地抓住所有必要的实体吗?
解决方案
如果您确保 A 的主键 id 是 B 中的外键,请像这样使用
type A struct{
Id int `gorm:"column:id"`
B []B `gorm:"column:b;ForeignKey:Aid"`
}
type B struct{
Aid int
}
如果没有,我建议使用
func (a *A) AfterFind()error{
return db.Model(&B{}).Find(&a.B).Error
}
推荐阅读
- c++ - 当我将 unique_ptr 或 shared_ptr 传递给引用指向对象的第三方函数时崩溃
- angular - 替代 ngx-datatable-group-footer
- ios - 使用 WebRTC 通过 ReplayKit 发送 iOS 设备的屏幕截图
- python - pyBarcode - imageWriter 设置
- php - PHP 版本不等于 OSX 上的 Homebrew
- javascript - 工具提示中图表的缩写值
- blueprism - 将自定义 VBO 对象存储在蓝色棱镜中的位置
- jsf - 如何以编程方式在 af:inputFile 中设置文件名和内容
- c# - Equals 和 GetHashCode 都不会在 IEqualityComparer 上被调用
- angular - Angular 5沿其他对象的属性上传文件