我已经尝试过here的Golang Gorm Hook,但是在尝试通过模型 ModTrans 更新表 md_transaction 时未触发任何操作,这里是我的golang代码:
package models
import (
"time"
"fmt"
"github.com/jinzhu/gorm"
)
type ModTrans struct {
TRX_ID string `gorm:"primary_key;column:trx_id" json:"TRX_ID"`
TRX_CODE string `gorm:"column:trx_code" json:"TRX_CODE"`
TRX_DATE *time.Time `gorm:"column:trx_date" json:"TRX_DATE"`
TRX_TYPE string `gorm:"column:trx_type" json:"TRX_TYPE"`
TRX_PAY_METHOD int `gorm:"column:trx_pay_method" json:"TRX_PAY_METHOD"`
}
func (t *ModTrans) TableName() string {
return "md_transaction"
}
// Updating data in same transaction
func (t *ModTrans) AfterUpdate(tx *gorm.DB) (err error) {
fmt.Println(">>>> it's work and firing....")
return
}
基于文档
如果您已经为模型定义了指定的方法,它将被自动调用
我是Golang GORM钩子的新手,为什么钩子不能很好地触发?还有其他例子吗?我曾尝试在Google上搜索未找到,也许我的关键词搜索不太正确。
答案 0 :(得分:0)
使用运算符&更改指针的方法效果很好:
err = DB.Model(&models.ModTrans{}).Where(&models.ModTrans{ TRX_CODE: pOrderCode }).
Updates(&models.ModTrans{
TRX_PAY_METHOD: 1,
TRX_STATUS: 2,
}).Error
答案 1 :(得分:0)
您需要通过模型才能使钩子正常工作。
DB.Model(&models.ModTrans{}).Where("uuid = (?)", uuid).Update(&modTrans)