我怎样才能在golang gorm中与自我建立多种关系?

时间:2014-12-28 00:57:13

标签: go psql go-gorm

我有一个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"`
}

2 个答案:

答案 0 :(得分:1)

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

type User struct {
    Id int64
    Related     []Product  `gorm:"foreignkey:product_id;associationforeignkey:related_product_id;many2many:related_products;" json:"related"`        
}

答案 1 :(得分:0)

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

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

type Product struct {
  Id          int64      `json:"_id"`
  .
  .
  .
  Related     []Product `gorm:"many2many:related_products;association_jointable_foreignkey:related_id"`
}