GORM 中多表关联查询:如何通过 Table1 的 Id 查询所有与其关联的 Table3 数据?

gorm 中多表关联查询:如何通过 table1 的 id 查询所有与其关联的 table3 数据?

gorm中多表关联查询:如何通过table1的id查询所有与其关联的table3数据

gorm是一款强大的orm框架,它支持对多表关联关系进行高效查询。在本文中,我们将探讨如何在gorm中查询所有与特定table1关联的table3数据。

以下是一个示例模型,其中:

type table1 struct {
    id      string  `gorm:"primary_key"`
    table2s []*table2 //has many
}

type table2 struct {
    id      string      `gorm:"primary_key"
    table1id string
    table3s []*table3   `gorm:"many2many:table2_table3"` //many2many
}

type table3 struct {
    id string `gorm:"primary_key"`
}

现在,我们想要通过table1的id查询所有与其关联的table3数据。期望返回的数据结构如下:

table1:{
    id:xxx,
    table2s:[
        {
            id:xxxxxx,
            table3s:[
                {id:x},
                {id:xx},
                ...
            ]
        },
        ...
    ]
}

要实现这一查询,可以使用gorm的preload()方法。该方法可以让我们在查询一个模型时,预加载与该模型相关联的模型。

以下是查询代码:

var data []Table1
db.Preload("Table2").Preload("Table2.Table3").Find(&data)

此查询将执行如下操作:

  1. 首先查询所有table1记录。
  2. 对于每个table1记录,预加载其关联的table2记录。
  3. 对于每个table2记录,预加载其关联的table3记录。

这样,我们就能获取到期望的数据结构,其中table1记录包含其关联的table2和table3记录。

以上就是GORM 中多表关联查询:如何通过 Table1 的 Id 查询所有与其关联的 Table3 数据?的详细内容,更多请关注其它相关文章!