1 回答

TA貢獻1858條經驗 獲得超8個贊
在這種情況下,似乎要走的路可能是自定義公司中的關系Full模型。使用 joinForeignKey,以下代碼有效。
type CompanyFull struct {
Products []*Product `json:"products" gorm:"many2many:company_products;joinForeignKey:ID"`
Subsidiaries []*Subsidiary `json:"subsidiaries" gorm:"many2many:company_subsidiaries;joinForeignKey:ID"`
ID int `json:"ID,omitempty"`
}
func (CompanyFull) TableName() string {
return "companies"
}
func main(){
...
result := db.Preload("Subsidiaries").Joins("LEFT JOIN company_products ON company_products.company_id = companies.id").Where("company_products.product_id = ?", ID).Find(&companies)
if result.Error != nil {
log.Println(result.Error)
} else {
log.Printf("%#v", companies)
}
有關自定義關系中使用的外鍵的詳細信息,請查看文檔 https://gorm.io/docs/many_to_many.html#Override-Foreign-Key
- 1 回答
- 0 關注
- 230 瀏覽
添加回答
舉報