【发布时间】:2018-09-13 23:46:21
【问题描述】:
鉴于以下one-to-many 关系(一个Receipt 有多个LineItem),我想将Price 字段从Receipt 表映射到Price 字段LineItem表(对于Product 中的每个LineItem)。
收据架构
type Product struct {
ID uint `json:"id"`
TotalPrice float64 `json:"total"`
LineItems []LineItem `json:"lineItems"`
}
LineItem 架构
type LineItem struct {
ID uint `json:"id"`
ProductID uint `json:"productID"`
Price float64 `json:"price"`
}
我目前正在使用 gorm,这是一种适用于 Go 的 ORM,但我找不到支持我正在寻找的功能的功能。
【问题讨论】:
-
我看不出你在做什么。产品价格如何(在概念上)与订单项价格相关?
-
可以把它想象成杂货店的收据 - 如果您购买一条面包和一袋牛奶,则收据上有两个项目。一个应该显示“1 Bread @ $1.99”,另一个应该显示“1 Milk @ 3.99”。我想用来自
Product的预定义Price填充LineItem内的Price。 -
您需要将价格存储在两个地方吗?在数据库中,我们努力对数据进行规范化,以便每条真理都存储在一个地方。您的订单项中已有 productID 外键。这还不足以让您在查询中使用联接并检索价格吗?
SELECT LineItem.*, Product.Price FROM LineItem JOIN Product ON LineItem.ProductID = Product.ID -
理想情况下,我们不需要在两个表中都存储价格 - 我试图找出 gorm 是否有一个不需要我手动编写 SQL 但看起来我必须 -我会试试这个说法!
-
@Sean 好像你在这里有错字。第一个结构,是
Product还是应该是Receipt?