如何从 gorm 中的模型中获取 table 名称?

How to get a table name from a model in gorm?

是否可以获取模型的 table 名称?我看到可以从 ModelStruct 获取它,但我不知道如何正确地做到这一点。我没有找到这个结构的任何初始化。

user := User{}
tableName := db...

像这样:

tableName := db.NewScope(model).GetModelStruct().TableName(db)

更新: 更短

tableName := db.NewScope(model).TableName() 

对于 Gorm v2,根据 https://github.com/go-gorm/gorm/issues/3603, 你可以这样做:

stmt := &gorm.Statement{DB: DB}
stmt.Parse(&ColumnStruct2{})
stmt.Schema.Table

Gorm v2 的另一种方法,不传递 DB 对象。

type WeatherStation struct{}
s, _ := schema.Parse(&WeatherStation{}, &sync.Map{}, schema.NamingStrategy{})
fmt.Println(s.Table)