GORM model名稱與資料表名稱的映射。
GORM慣例是modelCamelCase
名稱對應到資料表snake_cases
複數名稱,例如model Employee
對應到資料表employees
。
若不符以上慣例,model可實作Tabler
介面的TableName
方法來設定model對應的資料表名稱。
例如下面設定model Employee
屬性對應到資料表employee
。
type Employee struct {
ID int64 // column name is `id`
Name string // column name is `name`
Age int // column name is `age`
CreatedAt time.Time // column name is `created_at`
}
func (emp Employee) TableName() string {
return "employee" // 設定Employee對應資料表名稱為"employee"
}
或是在呼叫gorm.Open
傳入NamingStrategy.SingularTable
為true,則Employee
對應到資料表employee
。
const (
HOST = "localhost"
PORT = "5432"
DATABASE = "postgres"
USER = "admin"
PASSWORD = "12345"
SSL = "disable"
)
func getGormDB() *gorm.DB {
dsn := fmt.Sprintf(
"host=%s port=%s user=%s password=%s dbname=%s sslmode=%s",
HOST, PORT, USER, PASSWORD, DATABASE, SSL)
gormDB, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true, // use singular table name, table for `Employee` would be `employee` with this option enabled
},
})
if err != nil {
panic("open gorm db error")
}
return gormDB
}
沒有留言:
張貼留言