英文:
How can I go about making a many2many relationship to self in golang 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"`
}
英文:
I have a psql Database, and I am using the gorm library as well as the pq driver, as you see there is a many to many relationship for related products, however this throws out the error pq: column "product_id" specified more than once
is there a way to set an alias or am I going about this the wrong way?
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"`
}
答案1
得分: 2
我找到了自引用多对多关系的解决方案。
type User struct {
Id int64
Related []Product `gorm:"foreignkey:product_id;associationforeignkey:related_product_id;many2many:related_products;" json:"related"`
}
英文:
I've found the solution of self-referencing many2many relationship.
type User struct {
Id int64
Related []Product `gorm:"foreignkey:product_id;associationforeignkey:related_product_id;many2many:related_products;" json:"related"`
}
答案2
得分: 1
以下是翻译好的内容:
有点旧的帖子,但幸运的是,gorm最近添加了这个功能(参考:这里)。
在你的情况下应该是这样的:
type Product struct {
Id int64 `json:"_id"`
.
.
.
Related []Product `gorm:"many2many:related_products;association_jointable_foreignkey:related_id"`
}
英文:
Kinda old post but fortunately gorm have added lately this feature (reference: here).
In your case should be like this:
type Product struct {
Id int64 `json:"_id"`
.
.
.
Related []Product `gorm:"many2many:related_products;association_jointable_foreignkey:related_id"`
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论