Gorm中references的含义

Gorm文档中,“关联”的章节下,有“重写引用”的介绍。但是什么是references,要怎么使用,一直没有搞明白,所以在此专门记录一下。

“重写外键”很好理解,比如类别表category有一个主键id,文章表有一个category_id的外键对应类别表的id字段,这个时候是不需要重写外键的。但是如果文章表的外键不是category_id,而是cid的话,就要使用gorm:"foreignKey:Cid"的方式重写外键,才能把文章表和类别表进行关联。不管是category_id还是cid,文章表默认关联的是类别表的id字段,也就是默认关联主键。

如果想让文章表的cid不关联类别表的id字段,而是关联到类别表的other_id字段,要怎么弄呢?这就要使用“重写引用”了。

具体写法是如下:

1
2
3
4
5
type Article struct {
Id uint64 `gorm:"column:id" db:"id" json:"id" form:"id"`
Cid uint64 `gorm:"column:cid" db:"cid" json:"cid" form:"cid"`
Category Category `gorm:"foreignKey:Cid;references:OtherId"`
}