У меня есть следующий запрос 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"`
}
Вопрос : я хочу выполнить функцию Raw()
Горма для заполнения объекта models.Order
следующим образом:
var orders models.Order
db.Raw(query).Scan(&orders)
Этот Raw()
вызов правильно заполняет Order.ID
, Order.ShopID
и Order.TotalValue
, как и ожидалось.Тем не менее, он не заполняет никакую информацию LineItem
, хотя предоставленный запрос возвращает необходимые данные.
В документации для Raw()
говорится, что он не может быть связан с Preload()
.
Это достижимо?