我正在编写 PostgreSQL 表架构。
type TestTable struct {
ID int `gorm:"column:id;primaryKey;autoIncrement"`
CarType string `gorm:"column:car_type"`
}
Run Code Online (Sandbox Code Playgroud)
那么我如何添加“SEDAN”、“HATCHBACK”、“MINIVAN”等汽车类型作为枚举数据类型
Nic*_*ick 23
假设您将 GORM 与 PostgreSQL 一起使用。首先在数据库中创建一个类型。
CREATE TYPE car_type AS ENUM (
'SEDAN',
'HATCHBACK',
'MINIVAN');
Run Code Online (Sandbox Code Playgroud)
然后您需要定义以下模型:
import "database/sql/driver"
type carType string
const (
SEDAN carType = "SEDAN"
HATCHBACK carType = "HATCHBACK"
MINIVAN carType = "MINIVAN"
)
func (ct *carType) Scan(value interface{}) error {
*ct = carType(value.([]byte))
return nil
}
func (ct carType) Value() (driver.Value, error) {
return string(ct), nil
}
type MyTable struct {
gorm.Model
CarType carType `gorm:"type:car_type"`
}
func (MyTable) TableName() string {
return "my_table"
}
Run Code Online (Sandbox Code Playgroud)
MySQL 用户请注意,您可以添加结构标记gorm:,sql:这样您就不必运行原始查询来在数据库中创建枚举。
CarType carType `gorm:"type:enum('SEDAN', 'HATCHBACK', 'MINIVAN')";"column:car_type"`
Run Code Online (Sandbox Code Playgroud)
或者
CarType carType `sql:"type:ENUM('SEDAN', 'HATCHBACK', 'MINIVAN')" gorm:"column:car_type"`
Run Code Online (Sandbox Code Playgroud)