gorm many2many 使用上的问题

2. 问题描述?#

gorm 获取关联数据时,并没有得到预期

  1. gorm 外键,数据库必须存在相应的外键吗?

3. 您期望得到的结果?#

Organizations []MOrganization `json:"organizations" gorm:"many2many:org_user;ForeignKey:UserId;joinForeignKey:OrgId;"`
orm.Where("id", "144501629725577216").Preload("Organizations", "status = 1").Find(&loginUser)

下边是 sqllog

2021/11/16 13:48:25 D:/wwwroot/lecent-middle-center/service/user/user.go:172
[1.087ms] [rows:0] SELECT * FROM "org_user" WHERE "org_user"."org_id" = 144501629725577216

2021/11/16 13:48:25 D:/wwwroot/lecent-middle-center/service/user/user.go:172
[2.765ms] [rows:1] SELECT * FROM "user" WHERE "id" = '144501629725577216'
  1. 我确保 organization 数据表中存在数据。
  2. 上面这段代码返回的 organizations 是 nil
  3. sql 打印并没有去 organization 去取数据.

4. 您实际得到的结果?#

organization 应该有一条或者多条数据

比特莱布斯(bit-labs) 是一家专注于前沿软件开发的科技团队,致力于为企业和创业者提供高性能、可扩展的数字化解决方案。我们擅长:移动应用,公众号,小程序,网站,桌面端等应用开发.
guoliang1994
最佳答案

问题找到了,自问自答一波 :rage:

gorm 设置

many2many:org_user;foreignKey:id;joinForeignKey:user_id;References:id;joinReferences:org_id

各个键的详解

  • org_user 中间表表名
  • foreignKey user 表的主键
  • joinForeignKey 关联 user 表的字段
  • References organization 的主键
  • joinReferences 关联 organization 的字段

按照这个去套,就没问题了

3年前 评论
HJCJ 1年前
guoliang1994 (作者) (楼主) 1年前
讨论数量: 4
guoliang1994

问题找到了,自问自答一波 :rage:

gorm 设置

many2many:org_user;foreignKey:id;joinForeignKey:user_id;References:id;joinReferences:org_id

各个键的详解

  • org_user 中间表表名
  • foreignKey user 表的主键
  • joinForeignKey 关联 user 表的字段
  • References organization 的主键
  • joinReferences 关联 organization 的字段

按照这个去套,就没问题了

3年前 评论
HJCJ 1年前
guoliang1994 (作者) (楼主) 1年前

必须给你点个赞,困扰我一天得问题

3年前 评论