You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:45:25