一对多关联从一个table获取数据

One-to-many association get data from the one table

我是 Golang 和 Gorm 的新手,我找不到答案。在休息 api 时,我希望我的 json 带有来自一个 table 关系的值。

type Product struct {
    gorm.Model   
    Name             string       
    Description      string       
    Weight           string
    TypeID           uint
}
type Type struct {
    ID                   string         `gorm:"primaryKey;"`
    Name                 string
    Product              []Product

}

我希望我的产品 json 带有来自类型的 ID 和名称。 但这不起作用。

var product Product
id:=1
db.Preload("Type").First(&product, id)

我必须在结构中做这样的事情吗?

type Product struct {
    gorm.Model   
    Name             string       
    Description      string       
    Weight           string
    Type             Type 
}

如果要将 Type.IDType.Name 加载到 Product.IDProduct.Name 中,您需要从两个表中专门 select 字段:

var product Product
id:=1
db.Joins("JOIN types ON types.id = products.type_id"). Select("types.id, types.name, products.description, products.weight, products.type_id").First(&product, id)

如果要在Product结构体中将Type字段分离成一个单独的字段,需要做如下改动:

type Product struct {
    gorm.Model   
    Name             string       
    Description      string       
    Weight           string
    TypeID           uint
    Type             Type 
}

var product Product
id:=1
db.Preload("Type").First(&product, id)

此处,所有 Type 字段都将加载到 Product.Type 字段中。