用GORM创建一对多关联表
时间: 2024-05-07 15:17:56 浏览: 231
gorm:Golang的绝佳ORM库,旨在对开发人员友好
5星 · 资源好评率100%
假设我们有两个模型,一个是 `User`,另一个是 `Post`,每个用户可以有多个帖子。我们可以使用 GORM 来创建一个一对多的关联关系。
首先,我们需要在 `Post` 模型中添加一个 `UserID` 字段,用于存储每个帖子所属的用户的 ID。然后,我们可以在 `User` 模型中添加一个 `Posts` 字段,用于存储该用户所拥有的所有帖子。
代码示例如下:
```go
type User struct {
gorm.Model
Name string
Posts []Post
}
type Post struct {
gorm.Model
Title string
Content string
UserID uint
}
```
接下来,我们需要使用 GORM 的 `AutoMigrate` 方法来创建数据库表:
```go
db.AutoMigrate(&User{}, &Post{})
```
现在我们可以使用 GORM 的 `Create` 方法来创建用户和帖子,然后使用 `Association` 方法来建立关联关系:
```go
user := User{Name: "Alice"}
db.Create(&user)
post1 := Post{Title: "Post 1", Content: "Content 1", UserID: user.ID}
post2 := Post{Title: "Post 2", Content: "Content 2", UserID: user.ID}
db.Create(&post1)
db.Create(&post2)
db.Model(&user).Association("Posts").Append(&post1, &post2)
```
现在,我们可以通过查询用户来获取他们的所有帖子:
```go
var user User
db.Preload("Posts").First(&user, 1)
fmt.Println(user)
```
输出结果应该为:
```
{ID:1 Name:Alice Posts:[{ID:1 Title:Post 1 Content:Content 1 UserID:1} {ID:2 Title:Post 2 Content:Content 2 UserID:1}]}
```
阅读全文