我有这样的模型:
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()钩子中,我希望在将数据发送到客户端之前对从数据库中检索到的数据进行操作,但是无法在这个钩子中获得值。怎么做?
发布于 2022-10-13 06:27:40
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://stackoverflow.com/questions/74049959
复制相似问题