gorm 一对多增删改查
时间: 2023-08-13 22:06:53 浏览: 281
对于 GORM,一对多关系通常是通过外键来实现的。下面是一对多关系的增删改查示例:
1. 增加数据:
假设有两个模型:User 和 Article,一个用户可以拥有多篇文章。
```go
type User struct {
gorm.Model
Name string
Articles []Article
}
type Article struct {
gorm.Model
Title string
Content string
UserID uint // 外键
}
// 创建用户和文章
user := User{Name: "John"}
article1 := Article{Title: "Article 1", Content: "Content 1"}
article2 := Article{Title: "Article 2", Content: "Content 2"}
// 关联文章到用户
user.Articles = []Article{article1, article2}
// 创建用户和关联的文章到数据库
db.Create(&user)
```
2. 查询数据:
```go
var user User
db.Preload("Articles").First(&user, 1) // 根据用户ID查询用户及关联的所有文章
// 输出用户信息及关联的文章
fmt.Println("User:", user.Name)
for _, article := range user.Articles {
fmt.Println("Article:", article.Title)
}
```
3. 修改数据:
```go
// 查询用户
var user User
db.First(&user, 1) // 根据用户ID查询用户
// 修改用户的一篇文章
user.Articles[0].Title = "Updated Title"
// 更新数据库中的数据
db.Save(&user)
```
4. 删除数据:
```go
// 查询用户
var user User
db.First(&user, 1) // 根据用户ID查询用户
// 删除用户的一篇文章
article := user.Articles[0]
db.Delete(&article)
```
以上是简单的示例,实际使用中可以根据具体需求进行适当修改。注意在实际开发中,需要根据业务需求来处理级联操作、删除约束等问题。
阅读全文