gorm外键的规范性写法示例:
type DtProject struct {
gorm.Model
Name string `json:"name" form:"name" gorm:"column:name;comment:;type:varchar(191);"`
}
type DtProjectWorkerRel struct {
gorm.Model
ProjectId uint `json:"projectId" gorm:"comment:项目id;unique_index:project_company_idcard_idx"`
Project DtProject `gorm:"foreignKey:ID;references:ProjectId;"`
}
报错处理思路:
- 相信我,一般是
和foreignKey
哪个单词或符号写错还有references
写错,把下面这段复制下来重新改下吧。字段名
顺带提一下1:
数据表的初始化顺序,按照逻辑,应当先创建DtProject 表(虽然这个外键功能初始化时是静态的,顺序写乱了也不会报错,但是这方面我认为应当要养成习惯)。
err := db.AutoMigrate(
model.DtProject{},
model.DtProjectWorkerRel{},
)
顺带提一下2
references:
后面跟随的
字段名
,在gorm文档中是按照
生成的数据表中的字段名
来写的:
但是参考gin-vue-admin框架中的写法,
references:
后面的字段名是
跟随结构体驼峰式命名的
。
我在测试时,尝试在
references:
后面使用了
数据表中带下划线的字段名
和
结构体中的驼峰式字段名
,都没有报错,说明两种方案都是支持的。