一对多操作、
一、增加
user := relate_tables.User2{
Name:"halle",
Age:18,
Addr:"xxx",
Articles:[]relate_tables.Article{{
Title:"标题测试",
Content:"内容测试",
Desc:"描述测试",
},{
Title:"标题测试2",
Content:"内容测试2",
Desc:"描述测试2",
},
},
}
ret := db.Create(&user)
fmt.Println(ret.RowsAffected)
fmt.Println(ret.Error)
二、查询
1.Preload
var user2 relate_tables.User2
db.Preload("Articles").Find(&user2,2) // 关系名
fmt.Println(user2)
2.Association
var user2 relate_tables.User2
db.First(&user2,2)
db.Model(&user2).Association("Articles").Find(&user2.Articles)
fmt.Println(user2)
3.Related
var user2 relate_tables.User2
db.First(&user2,1)
var articles []relate_table.Article
db.Model(&user2).Related(&articles, "Articles") // 关系名称
三、更新
// 先查询
var user2 relate_tables.User2
db.Preload("Articles").Find(&user2,2) // 关系名
// 再更新,更新指定条件,不然会把所有满足条件的都更新
db.Model(&user2.Articles).Where("title=? and uid=?","标题测试2",2).Update("uid",3) // name和uid限制条件
// update只能更新一个字段,如果想同时更新多个字段,使用save,后面会讲
四、删除
// 先查询
var user2 relate_tables.User2
db.Preload("Articles").Find(&user2,2) // 关系名
// 再删除,删除要指定条件,不然会把所有满足条件的都删除
db.Delete(&user2.Articles,"title=? and uid=?","标题测试3",3)
// 或者使用where
db.Where("title=? and uid=?","标题测试3",3).Delete(&user2.Articles)