登录
首页 >  Golang >  Go问答

将数据库中的列映射到另一张表中

来源:stackoverflow

时间:2024-03-07 09:15:26 289浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《将数据库中的列映射到另一张表中》,涉及到,有需要的可以收藏一下

问题内容

鉴于以下 one-to-many 关系(一个 receipt 有许多 lineitem),我想将 price 字段从 receipt 表映射到 pricezqbendczq lineitem 表的 b 字段(对于 product 中的每个 lineitem)。

收据架构

type product struct {
    id             uint       `json:"id"`
    totalprice     float64    `json:"total"`
    lineitems      []lineitem `json:"lineitems"`
}

行项目架构

type LineItem struct {
    ID          uint    `json:"id"`
    ProductID   uint    `json:"productID"`
    Price       float64 `json:"price"`
}

我目前正在使用 gorm,一个 go 的 orm,但我找不到支持我正在寻找的功能。


解决方案


假设您有 3 个表/模型,receiptproductlineitem,您可以在 product 模型中添加引用 product 的字段,如下所示:

type receipt struct {
    id             uint       `json:"id"`
    totalprice     float64    `json:"total"`
    lineitems      []lineitem `json:"lineitems"`
}

type product struct {
    id          uint    `json:"id"`
    price       float64 `json:"price"`
}

type lineitem struct {
    id          uint     `json:"id"`
    productid   uint     `json:"productid"`
    product     *product `json:"product"`
}

然后,您可以使用 gorm 的 Preload 功能来查询 receipt,同时填充每个 lineitems 字段以及 product 字段:

db.preload("lineitems").preload("lineitems.product").find(&receipt)

这样,您就可以通过 product 字段访问每个 lineitem 中的价格信息:

for _, li in receipt.LineItems {
    fmt.Println(li.Product.Price)
}

今天关于《将数据库中的列映射到另一张表中》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>