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

rjee0c15  于 2022-12-07  发布在  Go
关注(0)|答案(3)|浏览(218)
type user struct {
    ID       int
    Username string `gorm:"size:255"`
    Name     string `gorm:"size:255"`
}

我想用这个模型创建一个表'user'。但是表名被自动设置为'users'。我知道这是gorm的默认行为。但是我想把表名设置为' user'。

6fe3ivhb

6fe3ivhb1#

为结构设置方法TableName

func (user) TableName() string {
    return "user"
}

链接:https://gorm.io/docs/models.html#conventions

rlcwz9us

rlcwz9us2#

Gorm有一个内置的方法,将在全局级别设置,所以所有的表将是单数。
对于gorm v1,您可以执行以下操作:

db.SingularTable(true)

对于v2,它更详细一些:

db, err := gorm.Open(postgres.Open(connStr), &gorm.Config{
    NamingStrategy: schema.NamingStrategy{
        SingularTable: true,
    },
})
q1qsirdb

q1qsirdb3#

若要明确设定数据表名称,您必须使用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"
}

相关问题