1 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果設(shè)置了表結(jié)構(gòu)并且您沒(méi)有使用AutoMigrate,那么只需更改標(biāo)簽以使MoreInfo成為只讀字段并確保使用別名來(lái)匹配Gorm執(zhí)行DB -> Go命名轉(zhuǎn)換的方式即可解決此問(wèn)題。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)
如果您使用的是自動(dòng)遷移,那么問(wèn)題將在表中創(chuàng)建一個(gè)列,盡管 Gorm 在使用結(jié)構(gòu)時(shí)會(huì)阻止寫(xiě)入該列。more_info
在這種情況下,您可以做的是使用一個(gè)新的結(jié)構(gòu)來(lái)嵌入測(cè)試結(jié)構(gòu),如下所示:
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 關(guān)注
- 242 瀏覽
添加回答
舉報(bào)