为了账号安全,请及时绑定邮箱和手机立即绑定

我怎样才能在 golang gorm 中与 self 建立多对多的关系?

我怎样才能在 golang gorm 中与 self 建立多对多的关系?

Go
智慧大石 2021-09-10 15:33:43
我有一个 psql 数据库,我正在使用 gorm 库和 pq 驱动程序,如您所见,相关产品存在多对多关系,但是这会抛出错误 pq: column "product_id" specified more than once是否有设置别名或 am 的方法我以错误的方式解决这个问题?type Product struct {    Id          int64      `json:"_id"`    Price       float32    `json:"price"`    Name        string     `sql:"size:255" json:"name"`    Description string     `json:"description"`    Material    string     `json:"material"`    Color       string     `json:"color"`    ColorId     int64      `json:"colorId"`    Categories  []Category `gorm:"many2many:product_categories;" json:"categories"`    Images      []Image    `json:"images"`    Tags        []Tag      `gorm:"many2many:product_tags;" json:"tags"`    Main        bool       `json:"main"`    Available   bool       `json:"available"`    Slug        string     `json:"slug"`    CreatedAt   time.Time  `json:"createdAt"`    Related     []Product  `gorm:"many2many:related_products;" json:"related"`}
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

我找到了自引用多对多关系的解决方案。:D


type User struct {

    Id int64

    Related     []Product  `gorm:"foreignkey:product_id;associationforeignkey:related_product_id;many2many:related_products;" json:"related"`        

}


查看完整回答
反对 回复 2021-09-10
?
catspeake

TA贡献1111条经验 获得超0个赞

有点老帖子但幸运的是 gorm 最近添加了这个功能(参考:这里)。


在你的情况下应该是这样的:


type Product struct {

  Id          int64      `json:"_id"`

  .

  .

  .

  Related     []Product `gorm:"many2many:related_products;association_jointable_foreignkey:related_id"`

}


查看完整回答
反对 回复 2021-09-10
  • 2 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信