gorm 不设置外键约束,有什么比较好的方式进行关联查询?

新手上路,请多包涵

表没有建立外键, 看了下gorm文档,貌似关联查询必须建立外键,大家平时有什么好的方法么,

如果使用 join 方法,怎么才能吧数据填充到struct,调研了一段时间,没有一个特别舒服的方式,除非暴力将字段手动填充到 struct 中,
两个结构大概是这样的:

type Aticle struct {
    Id int
    Title string
    UserId int
    User User
}

type User struct {
    Id int
    Name string
}

如果没有在user上使用tag建立外键,就不能关联查询!
如果使用join的话,怎么让字段自动填充到User,如果少的话,还能手动赋值,字段太多的话就太麻烦了!

阅读 7.3k
2 个回答

只是要求你在定义 Model 的时候指定外键,并不是数据库里真的需要存在这个外键,你完全可以只修改 Model 就好了,只要别用 Migration 就行。

AutoMigrate 会自动创建数据库外键约束,您可以在初始化时禁用此功能,例如:

DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
        DisableForeignKeyConstraintWhenMigrating: true, // 数据迁移时不生成外键
})

查看原文

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题