我有這個模型:
type User struct {
ID uint
Name string
Age int
Gender string
// hundreds of fields
}
用這個鉤子:
func (m *User) AfterFind(tx *gorm.DB) (err error) {
// I don't know how to get Gender value of APIUser struct from here
return
}
而這個智能選擇結構:
type APIUser struct {
ID uint
Gender string
}
然后我運行這個查詢:
DB.Model(&User{}).Find(&APIUser{}, id)
在 AfterFind() 鉤子中,我想在將它們發送到客戶端之前從資料庫中操作檢索到的資料,但是我無法在這個鉤子中獲取值。怎么做?
uj5u.com熱心網友回復:
AfterFind應該設定為既APIUser和User
以下是示例代碼
type User struct {
Id uint64
Avatar string
Nickname string
Password string
}
func (user *User) AfterFind(*gorm.DB) error {
return nil
}
type UserSimple struct {
Id uint64
Avatar string
}
func (v *UserSimple) AfterFind(*gorm.DB) error {
v.Avatar = "prefix/" v.Avatar
return nil
}
us := &UserSimple{}
db.Model(&User{}).Where("id = ?", 123).Find(us)
輸出
{123 prefix/avatar}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/514610.html
標籤:去钩戈戈姆
下一篇:右側的sprintf零填充
