如何在 gorm 中为表设置单数名称


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"
}

相关内容

  • 没有找到相关文章

最新更新