golang gorm多对多参考

时间:2017-01-22 09:52:10

标签: sql go many-to-many go-gorm

我有这个模型,多对多,我希望得到所有符合标签列表的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

如果我有一个包含tag1tag2的标记数组,我想在gif1中获得gif2&gifs

我多次阅读文档,发现只是我的问题的反面,即获取给定gif的标签。

我需要更换模型吗? 是否可以在多对多关系中设置两个关联字段?

1 个答案:

答案 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,反之亦然。