Почему Golang GORM перехватывает BeforeUpdate, AfterUpdate не срабатывает? - PullRequest
0 голосов
/ 17 июня 2020

Я пробовал Golang Gorm Hook из здесь , но ничего не запускал при попытке обновить таблицу md_transaction через Model ModTrans , здесь мой 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
}

на основе документации

Если вы определили указанные методы для модели, она будет вызываться автоматически

I Новичок в крючках golang GORM, почему крючки не стреляют? Есть ли другие примеры? Я пытался искать в Google, но не нашел, возможно, мой поиск по ключевым словам не совсем правильный.

1 Ответ

0 голосов
/ 17 июня 2020

хорошо работает с изменением метода на указатель с помощью оператора &:

err = DB.Model(&models.ModTrans{}).Where(&models.ModTrans{ TRX_CODE: pOrderCode }).
    Updates(&models.ModTrans{
        TRX_PAY_METHOD: 1, 
        TRX_STATUS: 2,
    }).Error
...