1 回答

TA貢獻1820條經(jīng)驗 獲得超10個贊
問題是 GORM 不確定新定義的類型的數(shù)據(jù)類型應該是什么,所以它試圖弄清楚。相反,應該顯式定義類型,在模型中使用標簽或在新類型上實現(xiàn) gorm 方法
模型中的標記
type MyModel struct {
...
MyText MultiString `gorm:"type:text"`
}
這告訴 GORM 使用textDB 列類型的類型。使用此策略,每次在模型中使用新類型時都必須應用標記。
GORM 方法
可以在新數(shù)據(jù)類型上實現(xiàn)兩個 GORM 方法來告訴 GORM 應該使用哪種數(shù)據(jù)庫類型:
GormDataType() string
GormDBDataType(db *gorm.DB, field *schema.Field) string
例子:
func (MultiString) GormDataType() string {
return "text"
}
func (MultiString) GormDBDataType(db *gorm.DB, field *schema.Field) string {
// returns different database type based on driver name
switch db.Dialector.Name() {
case "mysql", "sqlite":
return "text"
}
return ""
}
如果您使用的數(shù)據(jù)庫類型之間的數(shù)據(jù)類型不同,則此選項很有用。
- 1 回答
- 0 關注
- 247 瀏覽
添加回答
舉報