1 回答

TA贡献1820条经验 获得超10个赞
问题是 GORM 不确定新定义的类型的数据类型应该是什么,所以它试图弄清楚。相反,应该显式定义类型,在模型中使用标签或在新类型上实现 gorm 方法
模型中的标记
type MyModel struct {
...
MyText MultiString `gorm:"type:text"`
}
这告诉 GORM 使用textDB 列类型的类型。使用此策略,每次在模型中使用新类型时都必须应用标记。
GORM 方法
可以在新数据类型上实现两个 GORM 方法来告诉 GORM 应该使用哪种数据库类型:
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 ""
}
如果您使用的数据库类型之间的数据类型不同,则此选项很有用。
- 1 回答
- 0 关注
- 249 浏览
添加回答
举报