如何解决如何查询gorm中的ManyToMany字段
我正在使用 gorm 来处理数据库查询,并且我有 2 个模型 (ManyToMany) :
type Person struct {
ID uint `json:"id" gorm:"primary_key;unique;autoIncrement"`
Name string `json:"name" binding:"required"`
Family string `json:"family" binding:"required"`
Companies []Company `json:"companies" gorm:"many2many:person_companies;"`
}
type Company struct {
ID uint `json:"id" gorm:"primary_key;unique;autoIncrement"`
Name string `json:"name"`
cars []Car
}
我使用这个查询来接收我的用户列表:
func GetAllPeople() *[]domain.Person {
var people []domain.Person
db.Find(&people)
return &people
}
这有效,但向我显示公司为空
{
"id": 0,"name": "erfan","family": "","companies": null
}
我应该在查询中使用什么来在列表中显示用户公司 (id)?
解决方法
您必须使用带有自定义加载的 Preload
方法才能将公司 ID 加载到 Companies
字段中。
func GetAllPeople() *[]domain.Person {
var people []domain.Person
tx := db.Preload("Companies",func(db *gorm.DB) *gorm.DB {
return db.Select("ID")
}).Find(&people)
if tx.Error != nil {
// handle error
}
return &people
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。