3

我有一个 psql 数据库,我正在使用 gorm 库和 pq 驱动程序,正如您所见,相关产品存在多对多关系,但是这会抛出错误 pq: column "product_id" specified more than once是否有办法设置别名或我我走错路了?

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"`
}
4

2 回答 2

2

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

type User struct {
    Id int64
    Related     []Product  `gorm:"foreignkey:product_id;associationforeignkey:related_product_id;many2many:related_products;" json:"related"`        
}
于 2015-01-28T10:24:49.173 回答
1

有点旧的帖子,但幸运的是,gorm 最近添加了此功能(参考:here)。

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

type Product struct {
  Id          int64      `json:"_id"`
  .
  .
  .
  Related     []Product `gorm:"many2many:related_products;association_jointable_foreignkey:related_id"`
}
于 2018-02-15T12:15:32.660 回答