假设有两个对象:User
和 Order
,其中 Order
对象中有一个外键 user_id
与 User
对象关联。如果想查询某个用户的所有订单列表,可以使用 GORM 的预加载功能。
示例代码如下:
type User struct {
ID uint
Name string
Orders []Order
}
type Order struct {
ID uint
UserID uint // 外键
Product string
}
// 查询某个用户及其所有订单
var user User
db.Preload("Orders").First(&user, 1)
// 打印用户信息和订单列表
fmt.Println(user.Name)
for _, order := range user.Orders {
fmt.Println(order.Product)
}
上述代码中,通过 Preload()
方法预加载了 Orders
属性,即同时查询了该用户及其所有关联的订单。最终打印出用户信息和订单列表。