gorm 如何自动关联字段
时间: 2024-09-24 07:05:55 浏览: 38
gorm 中文文档(pdf)
GORM(Go ORM)是一款流行于Go语言中的数据库操作库,它支持多种数据库,并能简化数据模型映射到数据库表的过程。在GORM中,通过设置关系(association)可以自动关联字段。主要有三种常见的关联方式:
1. **一对一关联**(One-to-One):例如,User模型有一张Address表,你可以这样定义:
```go
type User struct {
gorm.Model
Name string
Address *Address // 使用指针表示是一对一关联
}
type Address struct {
UserID uint
Email string
}
```
这样,当获取User时,地址信息会一起返回。
2. **一对多关联**(Many-to-One):如Category拥有多个Post,定义为:
```go
type Category struct {
gorm.Model
Name string
Posts []Post `gorm:"ForeignKey:CategoryID"`
}
type Post struct {
gorm.Model
Title string
CategoryID uint // 关联外键
}
```
查询Category时,其所有Post也会一并加载。
3. **多对多关联**(Many-to-Many):如果两个模型之间有多对多关系,通常需要一个中间表,比如Tag和Article的关系:
```go
type Tag struct {
gorm.Model
Name string
}
type Article struct {
gorm.Model
Title string
Tags []Tag `gorm:"many2many:tag_article"`
}
```
GORM会自动创建一个tag_article中间表来存储关联数据。
要启用自动关联,只需在查询时指定`db.First()`、`db.Find()`等查询方法,GORM会在内部处理关联数据的加载。
阅读全文