Gorm不会在多对多关系中创建外键
我在尝试使用gorm生成DB时遇到问题。 当我构建DB gorm时,所有表和RelationshipsForeive键都已成功生成,但多对多关系除外。我确实生成了关联表,但没有外键 我有以下结构:设备和组。组可以有多个设备,并且同一设备可以位于多个组中Gorm不会在多对多关系中创建外键,go,many-to-many,go-gorm,Go,Many To Many,Go Gorm,我在尝试使用gorm生成DB时遇到问题。 当我构建DB gorm时,所有表和RelationshipsForeive键都已成功生成,但多对多关系除外。我确实生成了关联表,但没有外键 我有以下结构:设备和组。组可以有多个设备,并且同一设备可以位于多个组中 //Group group of devices type Group struct { gorm.Model Name string SVG string Devic
//Group group of devices
type Group struct {
gorm.Model
Name string
SVG string
Devices []*Device `gorm:"many2many:device_group;"`//association_foreignkey:id;foreignkey:id"`
}
//该装置是一种单物理测量装置
type Device struct {
gorm.Model
DeviceName string
Svg string
IP string
LastActive time.Time
MAC string
Version string
Groups []*Group `gorm:"many2many:device_group;"`
}
添加外键:
db.Model(device).AddForeignKey("id", "device_group(device_id)", "CASCADE", "CASCADE")
db.Model(group).AddForeignKey("id", "device_group(group_id)", "CASCADE", "CASCADE")
“添加外键”功能出现以下错误:
[2020-01-28 11:53:11]pq:没有唯一约束匹配引用表设备组的给定键
如您所见:它正在生成设备组表,但没有外键。
我尝试使用字段标记,尝试修改AddForeignKey函数或删除它,但似乎没有任何效果
有什么想法吗
谢谢引用的键必须是主键,因此必须以相反的方式添加约束。以下代码适用于我:
db.Table("device_group").AddForeignKey("device_id", "devices(id)", "CASCADE", "CASCADE")
db.Table("device_group").AddForeignKey("group_id", "groups(id)", "CASCADE", "CASCADE")
工作!在你回答之后,这看起来很明显。希望他们的文档将得到更新,并包含此示例。