我有以下sqlite
查询:
SELECT
orders.id
, orders.shop_id
, tv.total_value
, line_items.id
, line_items.product_id
, line_items.order_id
, line_items.description
, line_items.quantity
, products.price AS 'line_items.price'
FROM orders
JOIN line_items ON line_items.order_id = orders.id
JOIN products ON line_items.product_id = products.id
JOIN (
SELECT
line_items.order_id
, SUM(products.price * line_items.quantity) total_value
FROM line_items
LEFT JOIN products ON line_items.product_id = products.id
GROUP BY
line_items.order_id
) tv ON tv.order_id = orders.id
返回以下数据集:
具有以下型号:
type Order struct {
ID int64 `json:"id"`
ShopID int64 `json:"shopID"`
TotalValue float64 `json:"total"`
LineItems []LineItem `json:"lineItems"`
}
type LineItem struct {
ID int64 `json:"id"`
ProductID *int64 `json:"productID"`
OrderID *int64 `json:"orderID"`
Description string `json:"description"`
Quantity int64 `json:"quantity"`
Price float64 `json:"price"`
}
问题:我想执行Gorm的Raw()
函数来填充models.Order
对象,如下所示:
var orders models.Order
db.Raw(query).Scan(&orders)
此Raw()
调用正确地填充了Order.ID
,Order.ShopID
和Order.TotalValue
。但是,尽管提供的查询返回了必要的数据,但它不会填充任何LineItem
信息。
Raw()
的文档说它不能与Preload()
链接。
这可以实现吗?