Skip to main content

钩子 (Hooks)

Hook 是在创建、查询、更新、删除等操作之前或之后调用的函数。

创建钩子

func (u *User) BeforeCreate(tx *gorm.DB) (err error) {
u.UUID = uuid.New()

if u.Role == "admin" {
return errors.New("invalid role")
}
return
}

支持的钩子:

  • BeforeSave, BeforeCreate, AfterCreate, AfterSave
  • BeforeUpdate, AfterUpdate
  • BeforeDelete, AfterDelete
  • AfterFind

跳过钩子

如果你想跳过钩子方法,可以使用 SkipHooks 会话模式。

db.Session(&gorm.Session{SkipHooks: true}).Create(&user)