
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)此查询将执行如下操作:
- 首先查询所有table1记录。
- 对于每个table1记录,预加载其关联的table2记录。
- 对于每个table2记录,预加载其关联的table3记录。
这样,我们就能获取到期望的数据结构,其中table1记录包含其关联的table2和table3记录。










