是否可以获取模型的表名?我看到可以从 ModelStruct 获取,但我不知道如何正确操作。我没有找到此结构的任何初始化。
user := User{} tableName := db...
字符串
4xrmg8kj1#
对于Gorm v2,根据https://github.com/go-gorm/gorm/issues/3603,您可以执行以下操作:
stmt := &gorm.Statement{DB: DB} stmt.Parse(&ColumnStruct2{}) stmt.Schema.Table
zz2j4svz2#
就像这样:
tableName := db.NewScope(model).GetModelStruct().TableName(db)
字符串更新:更短
tableName := db.NewScope(model).TableName()
型
yebdmbv43#
Gorm v2的另一个方法,不传递DB对象。
type WeatherStation struct{} s, _ := schema.Parse(&WeatherStation{}, &sync.Map{}, schema.NamingStrategy{}) fmt.Println(s.Table)
toe950274#
当我试图设置一个两个表可以有相同列名的作用域时,我遇到了查找表名的问题。下面的代码片段对我有用。
func(db *gorm.DB) *gorm.DB { if db.Statement.Model == nil { return db.WithContext(ctx).Where("deleted_at IS NULL") } model := db.Statement.Model db.Statement.Parse(model) tableName := db.Statement.Schema.Table return db.WithContext(ctx).Where(fmt.Sprintf("%s.deleted_at IS NULL", tableName)) }
4条答案
按热度按时间4xrmg8kj1#
对于Gorm v2,根据https://github.com/go-gorm/gorm/issues/3603,您可以执行以下操作:
字符串
zz2j4svz2#
就像这样:
字符串
更新:更短
型
yebdmbv43#
Gorm v2的另一个方法,不传递DB对象。
字符串
toe950274#
当我试图设置一个两个表可以有相同列名的作用域时,我遇到了查找表名的问题。下面的代码片段对我有用。
字符串