本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

多对多操作

一、增加

// 一篇文章有多个帖子 article := relate_tables.Article2{ Title:"测试多对多标题1", Content:"测试多对多内容1", Desc:"测试多对多描述1", Tags:[]relate_tables.Tag{{ Name:"django", Desc:"django标签", }, { Name:"python", Desc:"python标签", }, }, } ret := db.Create(&article) fmt.Println(ret.Error)

或者先插入单表的,再关联插入

tag := relate_tables.Tag{Name:"beego2",Desc:"beego2标签"} db.Create(&tag) article := relate_tables.Article2{ Title:"测试多对多标题4", Content:"测试多对多内容5", Desc:"测试多对多描述5", Tags:[]relate_tables.Tag{ tag, }, } db.Create(&article) // 这里不会重复插入前面create的数据

二、查询

1.Preload

var article relate_tables.Article2 db.Preload("Tags").Find(&article,1) fmt.Println(article)

2.Association

var article relate_tables.Article2 db.First(&article,1) db.Model(&article).Association("Tags").Find(&article.Tags) fmt.Println(article)

3.Related

var article relate_tables.Article2 db.First(&article,1) var tags []relate_table.Tag db.Model(&article).Related(&tags, "Tags")

三、更新

// 先查询 var article relate_tables.Article2 db.Preload("Tags").Find(&article,1) // 再更新,记得加条件 db.Model(&article.Tags).Where("name = ?","beego").Update("name","xxx")

四、删除

// 先查询 var article relate_tables.Article2 db.Preload("Tags").Find(&article,1) // 再删除,记得加条件 db.Where("name = ?","xxx").Delete(&article.Tags)

1294人已阅读,今天你学习了吗?

添加新回复
目录