doukunsan5553 2018-09-13 23:46
浏览 494

使用Gorm将值从一列映射到单独表中的另一列

Given the following one-to-many relationship (One Receipt has many LineItem's), I would like to map the Price field from the Receipt table into the Price field of LineItem table (for each LineItem in Product).

Receipt Schema

type Product struct {
ID             uint       `json:"id"`
TotalPrice     float64    `json:"total"`
LineItems      []LineItem `json:"lineItems"`

}

LineItem Schema

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

I'm currently using gorm, an ORM for Go, but I can't find the functionality to support what I'm looking for.

  • 写回答

1条回答 默认 最新

  • doushang1880 2018-09-14 02:39
    关注

    Assuming that you have 3 tables/models, Receipt, Product, and LineItem, you can add field that reference Product in LineItem model like so :

    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"`
    }
    

    Then you can query Receipt while populating LineItems field as well as Product field in each LineItem by using gorm's Preload feature:

    db.Preload("LineItems").Preload("LineItems.Product").Find(&receipt)
    

    This way you will have the price info in each LineItem accessible through Product field:

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

报告相同问题?

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP