Golang GORM 连表查询:Preload 和 Joins 方法详解
Golang 中使用 GORM 查询连表可以通过使用 'Preload' 或 'Joins' 方法实现。
'Preload' 方法可以在查询主表的同时预加载关联表数据,例如:
// 定义模型
type User struct {
ID uint
Name string
Articles []Article // 定义一个关联模型
}
type Article struct {
ID uint
Title string
Content string
UserID uint // 与User模型关联
}
// 查询用户及其所有文章
var user User
db.Preload('Articles').First(&user, 1)
上面的代码中,'Preload' 方法会自动执行两个查询语句,第一个查询会查询用户信息,第二个查询会查询该用户的所有文章信息,最终返回一个包含用户和文章数据的结构体。
'Joins' 方法则可以执行关联查询,例如:
// 查询用户及其所有文章
var users []User
db.Joins('JOIN articles ON articles.user_id = users.id').Find(&users)
上面的代码中,'Joins' 方法会执行一条 SQL 语句来查询用户和文章数据,并将结果映射到一个包含用户和文章数据的结构体中。
需要注意的是,使用 'Joins' 方法时需要手动指定关联条件,而使用 'Preload' 方法则会自动根据模型定义中的关联关系来预加载数据。
原文地址: http://www.cveoy.top/t/topic/lHoV 著作权归作者所有。请勿转载和采集!