我有这个模型,多对多,我希望得到所有符合标签列表的Gif。
type Tag struct {
ID uint `gorm:"primary_key" json:"id,omitempty"`
Name string `gorm:"not null;unique" json:"name,omitempty"`
}
type Gif struct {
ID uint `gorm:"primary_key" json:"id,omitempty"`
Url string `gorm:"not null;unique" json:"url,omitempty"`
Tags []Tag `gorm:"many2many:gif_tags;" json:"tags,omitempty"`
}
我准备了一个游乐场here。
如果我有一个包含tag1
和tag2
的标记数组,我想在gif1
中获得gif2
和&gifs
。
我多次阅读文档,发现只是我的问题的反面,即获取给定gif的标签。
我需要更换模型吗? 是否可以在多对多关系中设置两个关联字段?
答案 0 :(得分:1)
所以我找到了如何添加反向引用 我在包含模型的同一个包中创建了两个文件,并为many2many添加了与相同连接表的关联。
tag.go:
type Tag struct {
ID uint `gorm:"primary_key" json:"id,omitempty"`
Name string `gorm:"not null;unique" json:"name,omitempty"`
Gifs []Gif `gorm:"many2many:gif_tags;" json:"gifs,omitempty"`
}
和gif.go:
type Gif struct {
ID uint `gorm:"primary_key" json:"id,omitempty"`
Url string `gorm:"not null;unique" json:"url,omitempty"`
Tags []Tag `gorm:"many2many:gif_tags;" json:"tags,omitempty"`
}
他们需要在单独的文件中。
现在我可以轻松访问所有与标签匹配的GIF,反之亦然。