postgresql - 未正确创建gorm中的外键和关联
问题描述
我试图在 PostgreSQL 上为它属于数据的人和数据属于人的人创建模型关联外键这是我的结构
type (
Data struct {
ID uint `gorm:"auto_increment"`
PersonID uint
Person *Person `gorm:"foreignkey:id;association_foreignkey:PersonID"`
Birthday *time.Time
Salary float64 `gorm:"type:money"`
}
Person struct {
gorm.Model
Email string `gorm:"type:varchar(100);unique_index;not null"`
Password string `gorm:"type:varchar(100);not null"`
Role string `gorm:"type:varchar(30);not null"`
DataID uint
Data *Data `gorm:"foreignkey:id;association_foreignkey:DataID"`
}
)
我想在数据表上必须Person_id
是来自 Person 表的外键,并且Data_id
在我在 DBeaver 上的 ER 图上看到之后,Person 表也必须是来自数据表的外键,这些不是我希望的那样创建的:( ER图上没有任何关系,我确定我的协会在上面错了,谁能给我一些信息来解决这个问题?
解决方案
当您自动迁移数据库时,您可以使用 gorm 的功能。
db.Model(&Data{}).AddForeignKey("person", "person(id)", "NO ACTION", "NO ACTION")
db.Model(&Person{}).AddForeignKey("data", "data(id)", "NO ACTION", "NO ACTION")
你也可以检查一下:Gorm Migration
推荐阅读
- ruby-on-rails - 如何查找用户是否在使用 rails 后端的 react js 应用程序中更改了 Jwt 令牌?
- php - PHP循环在Bootstrap中输出图片库,每行四个缩略图
- c# - 重定向到 IPostConfigureOptions 中的控制器操作
- angular - 角度动画延迟未执行
- java - NoSuchBeanDefinitionException:没有可用的“org.springframework.boot.web.reactive.error.ErrorAttributes”类型的合格bean:
- javascript - 将带有 nonce 的 CSP 标头添加到 Lambda Edge
- python - 是否可以连接 keras 序列实例?
- python - 使用 pandas 数据框创建年度投影数据
- datetime - 在日期表中的日期字段上使用 SUMX 时 OADate 无效
- deep-learning - 转换器的查询、键和值应该在通过线性层之前还是之后拆分?