Отображение значения из одного столбца в другой в отдельных таблицах с помощью Gorm - PullRequest
0 голосов
/ 14 сентября 2018

Учитывая следующее отношение one-to-many (у One Receipt есть много LineItem), я хотел бы отобразить поле Price из таблицы Receipt в поле Price LineItemтаблица (для каждой LineItem в Product).

Схема получения

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 , ORM для Go, но я не могу найти функциональные возможности для поддержки того, что я ищу.

1 Ответ

0 голосов
/ 14 сентября 2018

Предполагая, что у вас есть 3 таблицы / модели, Receipt, Product и LineItem, вы можете добавить поле, которое ссылается на Product в LineItem модели следующим образом:

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

Затем вы можете запросить Receipt при заполнении поля LineItems, а также поля Product в каждом LineItem с помощью функции Preload Горм:

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

Thisкак у вас будет информация о ценах в каждом LineItem доступном через Product поле:

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