最好用一个简单/相关的例子来描述我的问题。鉴于以下结构,有没有一种方法可以在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)
}
}
}
答案 0 :(得分:1)
您的OptionItem
上的gorm标记无效,应该为gorm:"preload:true"
。
或者,您始终可以通过db.Preload("OptionItems.OptionItem")
预加载嵌套关联。
p / s:看着那些结构的名字:D