教程

设置

qianmoQqianmoQ· 更新于 2026-09-23· 阅读 3 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

GORM 提供了 Set、Get、InstanceSet、InstanceGet 方法,允许用户将值传递给钩子或其他方法。

GORM 在某些功能中使用了这些方法,例如在迁移表时传递建表选项:


db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{})

Set / Get

使用 Set / Get 将设置传递给钩子方法,例如:

type User struct {
  gorm.Model
  CreditCard CreditCard
  
}

func (u *User) BeforeCreate(tx *gorm.DB) error {
  myValue, ok := tx.Get("my_value")
  
  
}

type CreditCard struct {
  gorm.Model
  
}

func (card *CreditCard) BeforeCreate(tx *gorm.DB) error {
  myValue, ok := tx.Get("my_value")
  
  
}

myValue := 123
db.Set("my_value", myValue).Create(&User{})

InstanceSet / InstanceGet

使用 InstanceSet / InstanceGet 将设置传递给当前 *Statement 的钩子方法,例如:

type User struct {
  gorm.Model
  CreditCard CreditCard
  
}

func (u *User) BeforeCreate(tx *gorm.DB) error {
  myValue, ok := tx.InstanceGet("my_value")
  
  
}

type CreditCard struct {
  gorm.Model
  
}


func (card *CreditCard) BeforeCreate(tx *gorm.DB) error {
  myValue, ok := tx.InstanceGet("my_value")
  
  
}

myValue := 123
db.InstanceSet("my_value", myValue).Create(&User{})

GitHub tag (latest SemVer)

评论

登录后参与评论

正在加载评论…