我目前通過 GORM 有 3 個表與它們之間的關系。我希望向賣家詢問有關該關系的所有資訊。這是我的物體:
type ShopType struct {
ID uint `gorm:"primarykey" json:"id"`
Name string `json:"name" xml:"name" form:"name" query:"name"
}
type Shop struct {
ID uint `gorm:"primarykey" json:"id"`
Name string `json:"name" xml:"name" form:"name" query:"name"
ShopType ShopType `gorm:"ShopTypeID;constraint:OnUpdate:CASCADE,OnDelete:RESTRICT;" json:"-"`
}
type Seller struct {
ID uint `gorm:"primarykey" json:"id"`
Firstname string `json:"firstname" xml:"firstname" form:"firstname" query:"firstname"
Lastname string `json:"lastname" xml:"lastname" form:"lastname" query:"lastname"
Shop Shop `gorm:"foreignKey:ShopID;constraint:OnUpdate:CASCADE,OnDelete:RESTRICT;" json:"-"`
}
不能用likeJoins代替Preload:
db.Model(&models.Seller{}).Joins("Shop").Joins("Shop.ShopType").Find(&results)
?
我已經嘗試過了,但它不起作用。
我也試過:
db.Model(&models.Seller{}).Joins("JOIN shops s on s.id = sellers.shop_id").Joins("JOIN shop_types st on st.id = s.shop_type_id")
它的作業,但它沒有填充 Shop 和 ShopType 物體的道具,只填充有關賣家的資訊。
我正在尋找使用Joins而不是加入我的物體,Preload因為我想在我的查詢中添加一些子句,例如 :.Where('Shop.ShopType.Name IN (?)')而這對于該方法是不可能的Preload。
uj5u.com熱心網友回復:
第二個查詢幾乎就在那里,您可以將PreloadandWhere函式與它結合起來。
var sellers []Seller
db.Joins("JOIN shops s on s.id = sellers.shop_id").
Joins("JOIN shop_types st on st.id = s.shop_type_id").
Preload("Shop.ShopType").
Where("st.name IN (?)", []string{"Store1", "Store2"}).
Find(&sellers)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/438859.html
