如何通过GORM的AutoMigrate为Like模型自动创建外键?
GORM自动迁移时为Like模型设置外键的正确方式
你之前使用的gorm:"foreignKey:Post"标签用法有误,GORM的外键关联需要明确指定当前模型的外键字段和关联表的主键字段,正确的标签组合是foreignKey搭配references。
修改后的Like模型
type Like struct { PostId string `json:"post_id" gorm:"foreignKey:PostId;references:ID"` // 关联posts表的ID主键 UserId string `json:"user_id" gorm:"foreignKey:UserId;references:ID"` // 关联users表的ID主键 CreatedAt time.Time `json:"created_at"` }
补充说明
- 上述代码假设你的
User和Post模型的主键字段都是ID且类型为string,如果你的主键字段名不是ID(比如UserId或PostId),需要将references的值替换为对应的主键名称。 - 若需要添加级联操作(比如删除帖子时自动删除关联的点赞记录),可以追加
constraint标签:PostId string `json:"post_id" gorm:"foreignKey:PostId;references:ID;constraint:OnDelete:CASCADE"`
迁移时的注意事项
调用AutoMigrate时,必须同时包含User、Post和Like三个模型,GORM才会根据标签自动创建外键约束:
db.AutoMigrate(&User{}, &Post{}, &Like{})
内容的提问来源于stack exchange,提问作者darkstar
相关产品推荐
相关产品推荐

