首页 > 后端开发 > Golang > 如何高效获取GORM地点-城镇关系中的关联数据?

如何高效获取GORM地点-城镇关系中的关联数据?

Linda Hamilton
发布: 2024-12-18 13:40:11
原创
902 人浏览过

How to Efficiently Fetch Associated Data in GORM's Place-Town Relationship?

GORM Golang ORM 关联:获取关联字段

在 GORM(一个强大的 Go ORM)中,您可以在表示数据库表的结构之间创建关联。在此场景中,您有一个与 Town 结构关联的 Place 结构,其中每个 Place 属于一个 Town。

您的代码当前获取所有 Place 记录,但您希望包含每个 Place 的关联 Town 信息。您查询中的错误是 Place 结构中未指定外键 TownID。

要解决此问题,请修改 Place 结构:

1

2

3

4

5

6

type Place struct {

  ID          int

  Name        string

  TownID      int // The foreign key

  Town        Town

}

登录后复制

现在,您有多种选择检索关联的城镇数据:

选项 1:手动加载(不推荐)

迭代每个地点并使用模型手动加载关联的城镇。相关:

1

2

3

4

5

places := []Place{}

db.Find(&places)

for i, _ := range places {

    db.Model(places[i]).Related(&places[i].Town)

}

登录后复制

这种方法在产生预期结果的同时,受到“N 1 “问题,每个地方都会发出多个数据库查询。

选项 2:预加载(推荐)

在获取地点记录时使用 Preload 函数预先加载关联的城镇:

1

db.Preload("Town").Find(&places)

登录后复制

这只会触发两个查询:一个用于获取所有地点,一个用于获取所有地点获取所有关联的城镇。它随着地点和城镇的数量而扩展。

预期输出:

1

[{1 Place1  {1 Town1} 1} {2 Place2  {1 Town1} 1}]

登录后复制

以上是如何高效获取GORM地点-城镇关系中的关联数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板