1 回答

TA贡献1812条经验 获得超5个赞
如果设置了表结构并且您没有使用AutoMigrate,那么只需更改标签以使MoreInfo成为只读字段并确保使用别名来匹配Gorm执行DB -> Go命名转换的方式即可解决此问题。more_info
type Test struct {
ID string `gorm:"column:id;type:varchar(32);primaryKey;comment:Unique ID" json:"id"`
Name string `gorm:"column:name;type:varchar(255);comment:Name Info" json:"name"`
Remark string `gorm:"column:remark;type:varchar(255);comment:Remark Info" json:"remark"`
MoreInfo string `gorm:"->" json:"moreInfo"` // Non-table field
}
gormDB.Select("*, 'testMoreInfoVal' AS more_info").Where(&test).Find(&test)
如果您使用的是自动迁移,那么问题将在表中创建一个列,尽管 Gorm 在使用结构时会阻止写入该列。more_info
在这种情况下,您可以做的是使用一个新的结构来嵌入测试结构,如下所示:
type Test struct {
ID string `gorm:"column:id;type:varchar(32);primaryKey;comment:Unique ID" json:"id"`
Name string `gorm:"column:name;type:varchar(255);comment:Name Info" json:"name"`
Remark string `gorm:"column:remark;type:varchar(255);comment:Remark Info" json:"remark"`
}
type TestExt struct{
Test
MoreInfo string `gorm:"->" json:"moreInfo"`
}
testext := TestExt{}
gormDB.Model(&Test{}).
Select("*, 'testMoreInfoVal' AS more_info").
Where(Test{ID: "0000000001"}).
Find(&testext)
- 1 回答
- 0 关注
- 203 浏览
添加回答
举报