Есть ли способ с вложенной предварительной загрузкой GORM для предварительной загрузки структур массива на элемент, который вы предварительно загружаете? - PullRequest
1 голос
/ 22 октября 2019

Мой вопрос лучше всего описать на простом / актуальном примере. Учитывая приведенные ниже структуры, можно ли использовать вложенную предварительную загрузку в GORM для заполнения моделей массива в предварительно загруженной модели?

type OptionItem struct {
    gorm.Model
    blah    string
}

type OrderItem struct {
    gorm.Model

    OptionItems  []OrderOptionItem

    OrderID       uint                 `gorm:"column:order_id"`
    Order         Order
}

type OrderOptionItem struct {
    gorm.Model

    OrderItemID  uint                  `gorm:"column:order_item_id""`

    OptionItemID uint                  `gorm:"column:option_item_id"`
    OptionItem   OptionItem            `gorm:"auto_preload"`
}


func getOrderItemsByOrderID(orderID string) {

    var orderItems []OrderItem
    a.db.DB.
        Preload("Order", "id = (?)", orderID).
        Preload("OptionItems").
        Find(&orderItems)


    for _, oi := range orderItems {
        for _, ooi := range oi.OptionItems {
            // OptionItem on OrderOptionItem is not populated
            log.Println(ooi.OptionItem.ID)
        }
    }
}
...