gin框架如何使用gorm的新增和查询的钩子
1. 运行环境
mac go 1.16
2. 问题描述?
type Abc struct {
Id int64 `json:"id"`
Aa string `json:"aa"`
Bb string `json:"bb"`
}
func (a *Abc) UpdateParams(ctx *gin.Context, conds, fields) (err error) {
//更新参数
return
}
func (z *Abc) BeforeUpdate(tx *gorm.DB) (err error) {
fmt.Println(z)
z.Bb = z.Aa
//或者
tx.Statement.Set("bb", z.Aa)
return nil
}
3. 您期望得到的结果?
期望更新aa字段时候,bb字段也直接更新了
4. 您实际得到的结果?
未更新bb
UPDATE abc
SET aa
=’12345678’ WHERE id
= 1
貌似刚好没把重点的代码贴出来,要看你是怎么 update 的,像UpdateColumn更新字段会跳过钩子的。不妨进去看下源码。 另外,如果钩子返回了任何错误,则修改将被回滚。
你在钩子里没调用
tx.Model(&Model{}).Where("xxx = ?", xxx).Update("xxx", xxx)
啊,怎么可能触发更新。