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' 方法则会自动根据模型定义中的关联关系来预加载数据。

Golang GORM 连表查询:Preload 和 Joins 方法详解

原文地址: http://www.cveoy.top/t/topic/lHoV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录