一对多关联从一张表中获取数据

发布于 2025-01-15 16:00:23 字数 763 浏览 1 评论 0原文

我是 Golang 和 Gorm 的新手,我找不到答案。在 REST API 中,我希望我的 json 带有来自一个表关系的值。

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 
}

I'm new to Golang and Gorm, and I couldn't find the anwswer. In a rest api, I want my json to come with values from the one table relation.

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

}

and I want my Product json to come with the ID and Name from Type.
but this doesn't work.

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

Do I have to do something like this in the struct?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱的那么颓废 2025-01-22 16:00:23

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

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)

如果要将 Type 字段分离到 Product 结构中的单独字段中,则需要进行以下更改:

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 字段。

If you want to load Type.ID and Type.Name into Product.ID and Product.Name, you need to specifically select fields from two tables:

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)

If you want to separate Type fields into a separate field in the Product struct, you need to make the following changes:

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)

Here, all of the Type fields will be loaded into the Product.Type field.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文