如何在 gorm 中使用自定义预加载
How do I use custom preload in gorm
我有这两个结构
type User struct {
gorm.Model
Name string
CompanyID int
Company Company
}
type Company struct {
gorm.Model
Name string
Adress string
}
我想获取用户并预加载他们的公司,但我不想获取地址字段我尝试了如下自定义预加载,并在邮递员中对其进行了测试。查询返回了所有字段,但对于地址,我得到一个空字符串,发生这种情况的原因是,当将结果存储在用户结构中时,golang 会自动初始化所有字段,并且字段地址会返回其初始值,即空刺
var user []User
db.Table("users").Preload("Company",func(db *gorm.DB) *gorm.DB {
return db.Select("ID" ,"Name")
}).Find(&user)
只有name和id没有地址怎么办
如果您的服务器将结果导出为 json,您可以像这样添加 json 标记 omitempty:
type Company struct {
gorm.Model
Name string
Adress string `json:"omitempty"`
}
这样,如果地址字段为空字符串,将不会被包括在内。
我有这两个结构
type User struct {
gorm.Model
Name string
CompanyID int
Company Company
}
type Company struct {
gorm.Model
Name string
Adress string
}
我想获取用户并预加载他们的公司,但我不想获取地址字段我尝试了如下自定义预加载,并在邮递员中对其进行了测试。查询返回了所有字段,但对于地址,我得到一个空字符串,发生这种情况的原因是,当将结果存储在用户结构中时,golang 会自动初始化所有字段,并且字段地址会返回其初始值,即空刺
var user []User
db.Table("users").Preload("Company",func(db *gorm.DB) *gorm.DB {
return db.Select("ID" ,"Name")
}).Find(&user)
只有name和id没有地址怎么办
如果您的服务器将结果导出为 json,您可以像这样添加 json 标记 omitempty:
type Company struct {
gorm.Model
Name string
Adress string `json:"omitempty"`
}
这样,如果地址字段为空字符串,将不会被包括在内。