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 关注
- 174 浏览
添加回答
举报