如何为实体A设置结构标记可能在GORM中包含B并使make自动创建和预加载

时间:2019-01-31 08:45:00

标签: go go-gorm

考虑我有BaseNotificationExtendedNotification结构。

对于某些通知,他们仅使用base_notificaion表,但其中一些通知会将一些额外的数据保存到extended_notificaion中。

如何在这两个结构中设置结构标记,以便在我运行时

db.Create(&entendedNotification) // or something else

GORM将知道是否需要在extended_notification中插入新的元组(例如不是nil或字段已填写)

当我打电话

db.Preload(`ExtendedNotification`).Find(&notifications)

它会相应地获取所有必要的实体吗?

1 个答案:

答案 0 :(得分:0)

如果您确定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
}