首页 > 解决方案 > 如何在 gorm many2many 关联中仅获取 ID 列表

问题描述

我有一个场景,其中两个表之间存在多对多关系,这两个表位于与不同微服务相关的不同数据库中。假设我有表 Post 和 Author。这些表之间存在多对多关系。但是我的 Author 表存储在另一个数据库中。在我的 Post 服务中,我可以获取所有作者的列表。

现在,描述多对多关系(即 post_authors)的表在 Post 服务中。当我使用 db.Find() 获取帖子时,我想要一些东西来获取与帖子关联的作者 ID 列表,使用 gorm 关联。并希望在一个查询中完成,而不是循环浏览帖子。

标签: postgresqlgomicroservicesgo-gorm

解决方案


type Post struct {
  ID int 
  Authors []Author `gorm:"many2many: post_authors;"`
 
}

type Author struct {
  ID int 
}

您可以尝试以下代码

var posts []Post
db.Where("id in (?)" , []int{1,2,3}).Preload("Authors").Find(&posts)

gorm 将加载带有作者的帖子


推荐阅读