type user struct {
ID int
Username string `gorm:"size:255"`
Name string `gorm:"size:255"`
}
我想使用此模型创建一个表"用户"。但表名会自动设置为"用户"。我知道这是 gorm 的默认行为。但我希望表名是"用户"。
设置结构的方法TableName
。
func (user) TableName() string {
return "user"
}
链接: https://gorm.io/docs/models.html#conventions
Gorm 有一个内置的方法,该方法将在全局级别设置,因此所有表都是单数。
对于 gorm v1,您可以执行以下操作:
db.SingularTable(true)
对于 v2,它更详细一些:
db, err := gorm.Open(postgres.Open(connStr), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true,
},
})
若要显式设置表名,必须使用TableName
方法创建一个接口Tabler
,然后为结构创建一个接收器方法(在接口中定义(:
type user struct {
ID int
Username string `gorm:"size:255"`
Name string `gorm:"size:255"`
}
type Tabler interface {
TableName() string
}
// TableName overrides the table name used by User to `profiles`
func (user) TableName() string {
return "user"
}