使用go 1.5
和gorm
。
说我想制作一个events
和created_by_id
列的updated_by_id
表。
我写的模型就像
type By struct {
ByID sql.NullInt64
By *User
}
type CreatedBy struct {
By
}
type UpdatedBy struct {
By
}
type Event struct {
CreatedBy
UpdatedBy
}
当我尝试保存event
对象时,我会尝试保存列by_id
的值,而不是created_by_id
和updated_by_id
的值。我需要做些什么才能确保ByID
和CreatedBy
的{{1}}属性的列名称不同?
答案 0 :(得分:0)
问题在于您将CreatedBy
和UpdatedBy
同时嵌入Event
,因此对Event.By
的调用含糊不清且不允许(您必须是能够明确指定Event.CreatedBy.By
和Event.UpdatedBy.By
以消除两个字段的歧义。)
解决方案很可能是没有嵌入类型,但实际上创建了一个带有显式字段的结构:
type Event struct {
CreatedBy CreatedBy
UpdatedBy UpdatedBy
}
gorm
现在应该知道如何消除两列的歧义。
当然,如果您只是为了列映射而将By
嵌入CreatedBy
和UpdatedBy
,那么您不需要声明新的struct
S:
type By struct {
ByID sql.NullInt64
By *User
}
type Event struct {
CreatedBy By
UpdatedBy By
}