gorm多表join
时间: 2025-02-01 19:25:56 浏览: 21
GORM 多表 JOIN 使用方法
在 GORM 中执行多表联合查询可以通过 Joins
方法实现。此方法允许灵活地操作多个表格之间的连接,无论是内联接还是左联接等不同类型的联接。
对于结构体定义,在 Go 结构体内可以使用标签来指定列名映射到 MySQL 表中的字段名称[^2]。例如:
type System struct {
ID uint `gorm:"primaryKey"`
SysID string `gorm:"column:systemId"` // 映射至MySQL的 systemId 字段
}
当涉及到两个或更多表之间建立关联并进行查询时,首先需要正确定义模型间的关联关系。这里给出一个简单的例子展示如何设置用户及其附加信息(如个人信息)的关系[^3]:
package models
import "gorm.io/gorm"
// 用户基本信息
type User struct {
gorm.Model
Name string
Age int
}
// 用户详情信息
type UserInfo struct {
gorm.Model
UserID uint // 关联用户的外键
Pic string // 图片路径或其他属性...
Address string
Email string
User User // 建立一对一关联
}
为了执行一个多表 JOIN 查询,比如获取所有用户连同他们的个人资料数据,可以这样做[^1]:
var users []User
db.Joins("LEFT JOIN user_infos ON users.id = user_infos.user_id").Find(&users)
for _, user := range users {
fmt.Printf("Name:%s, Email:%s\n", user.Name, user.UserInfos.Email)
}
上述代码片段展示了通过 LEFT JOIN 将 Users 和 UserInfos 这两张表结合起来,并最终返回包含两者信息的结果集。注意这里的 user_infos
是假设的小写蛇形命名法表示的实际数据库表名;如果实际应用中采用不同的命名约定,则需相应调整。
相关推荐


















