Gorm之根据外键关联表
有一个article表:

和articlecate表:

其中article.cate_id为外键
# 1、初始化表
//article.go
type Article struct {
Id int
Title string
//ArticleCateId int //默认创建外键时按照表名+id显示
CateId int //自定义外键
State int
//关联表
//ArticleCate ArticleCate `gorm:"foreignkey:CateId"` //外键名称指定
}
func (Article) TableName() string {
return "article"
}
//articlecate.go
// references主键 默认id 如果主键为id可以不配置
// foreignkey外键 默认表名字+id 如果外键为表名字+id可以不配置
type ArticleCate struct {
Id int
Title string
State int
Article []Article `gorm:"foreignkey:CateId;references:Id"`
}
func (ArticleCate) TableName() string {
return "article_cate"
}
//controller.go
type ArticleController struct {
user.BaseController
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 2、查询时获取对应的表格数据
func (con ArticleController) IndexArticleCate(c *gin.Context) {
articleCateList := []models.ArticleCate{}
//查询全部数据
//models.DB.Find(&articleList)
//查询文章分类时获取分类对应的文章
models.DB.Preload("Article").Find(&articleCateList)
c.JSON(http.StatusOK, gin.H{
"result": articleCateList,
})
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
编辑 (opens new window)