gin关联查询的一个小小的知识点

2019-9-26 liyangcoder Golang

在做一个老项目迁移,从PHP迁移到Golang,于是不得不一边迁移一边深入的了解老系,发现老系统有很多奇葩的设计,今天说说其中一个,以及给我带来的困扰和解决方案。

有三张表

1.用户表(user)

关键字段
说明
uid
自增主键
username
用户名
...
其他字段

2.文章表(blog)

关键字段
说明
gid
自增主键
sortid
分类id
author
文章id
title
文章标题
...
其他字段

3.分类表(sort)

关键字段
说明
sid
分类id
sortname
分类名称
...
其他字段

golang的gin、beego,PHP的Yii、Laravel等框架,都是可以自动关联的,可是他们默认的关联条件是主表的id字段以及子表中的主表表名拼上“_id”,于是上面的表结构就很坑爹了,研究了好一会,新手伤不起啊。

关联部分这样写,完美解决:


type Blog struct {
	Gid         int64  `json:"gid",gorm:"primary_key;auto_increment"`
	Title       string `json:"title"`
	//这里忽略一些和本文无关的属性
	User    User   `gorm:"foreignkey:Author;association_foreignkey:Uid"`
	Sort    Sort   `gorm:"foreignkey:Sortid;association_foreignkey:Sid"`
}
当然不要忘了,在查询的时候使用
.Preload("User").Preload("Sort")
否则不会生效的哦...


标签: golang

Powered by emlog 冀ICP备13011830号-1