4 回答
TA贡献1878条经验 获得超4个赞
笔记!
从 gorm 2.0 开始,这不再是必需的
解决办法是在迁移数据库的时候加入这一行:
db.Model(&models.UserInfo{}).AddForeignKey("u_id", "t_user(id)", "RESTRICT", "RESTRICT")
TA贡献1824条经验 获得超5个赞
我发现以下代码无需执行任何自定义迁移代码即可正确创建外键;只是平常的AutoMigrate。
type Account struct {
ID uint `gorm:"primary_key"`
}
type Transaction struct {
ID uint `gorm:"primary_key"`
AccountID uint
Account Account `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
}
我正在使用“Gorm 2.0”,它是gorm.io/gorm v1.23.3.
TA贡献1842条经验 获得超12个赞
阅读https://gorm.io/docs/belongs_to.html中的属于关系 此外,这里有一个很好的例子: https: //medium.com/@the.hasham.ali/how-to-use-uuid -key-type-with-gorm-cc00d4ec7100
// User is the model for the user table.
type User struct {
Base
SomeFlag bool `gorm:"column:some_flag;not null;default:true"`
Profile Profile
}// Profile is the model for the profile table.
type Profile struct {
Base
Name string `gorm:"column:name;size:128;not null;"`
UserID uuid.UUID `gorm:"type:uuid;column:user_foreign_key;not null;"`
}
TA贡献1847条经验 获得超7个赞
我们可以在最新版本中使用添加外键约束CreateConstraint。
示例:假设我们有两个实体
type User struct {
gorm.Model
CreditCards []CreditCard
}
type CreditCard struct {
gorm.Model
Number string
UserID uint
}
现在为用户和信用卡创建数据库外键
db.Migrator().CreateConstraint(&User{}, "CreditCards")
db.Migrator().CreateConstraint(&User{}, "fk_users_credit_cards")
转换为 Postgres 的以下 SQL 代码:
ALTER TABLE `credit_cards` ADD CONSTRAINT `fk_users_credit_cards` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`)
- 4 回答
- 0 关注
- 318 浏览
添加回答
举报