栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

golang gorm三个表关联Preload的写法

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

golang gorm三个表关联Preload的写法

需求

三个表 article,article_user,user
article和article_user 是一对多
article_user 和 user 是一对一

查询一条 article的记录的时候,需要同时将 user的数据也带过来

{
  "id": 1,
  "article_users": [
    {
      "id": 100,
      "user_id": 10,
      "user": {
        "id": 10,
        "user_name": "XXX"
      }
    }
  ]
}
结构体定义
type Article struct {
	Id           int           `json:"id"`
	ArticleUsers []ArticleUser `json:"article_users"`
}

type ArticleUser struct {
	Id     int  `json:"id"`
	UserId int  `json:"user_id"`
	User   User `json:"user" gorm:"foreignKey:id;AssociationForeignKey:user_id"`
}

type ArticleUser struct {
	Id       int    `json:"id"`
	UserName string `json:"user_name"`
}
查询gorm
var model models.Article
	err = GetDB().Model(&models.Article{}).Where(id).Preload("ArticleUsers").Preload("ArticleUsers.User").Find(&model).Error
关键点
  1. Preload
  2. gorm的关键词 需要 foreignKey 指定外部ID,AssociationForeignKey 指定关联的本ID
  3. 在Preload中可以使用点号进行指定 ArticleUsers.User
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/910345.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号