type ExamPaper struct {
gorm.Model
Name string `json:"name" gorm:"试卷名称"`
ExamQuestions []ExamQuestion `json:"examQuestions"
gorm:"many2many:paper_questions" `
S SingleQuestionNumberAndScore //单选
}
type ExamQuestion struct {
gorm.Model
Name string
}
type SingleQuestionNumberAndScore struct {
gorm.Model
Name string
Number int
Score int
ExamPaperID uint
}
我们有一张试卷,id是1,我们有一道试题,id也是1,从结构体的定义中我们可以看出,试卷和试题是many2many的关系,single_question_number_and_score表是存储的试卷中的单选题的数量,总分数,paper和 single_question_number_and_score 是HasOne的关系。
现在有一个需求,我们想要删除这个试卷,同时一键删除这个试卷所关联的所有关系,这个是否怎么办?
之前我都是找到对应的关系,然后一个一个删除,但是这样不高效,我就在想,gorm的作者肯定实现了这个功能,于是我去官方文档里面查找,终于在一个不太显眼的位置找到了
我们来写一个方法,实践一下
func assion() {
paper := &ExamPaper{
Model : gorm.Model{
ID:1,
},
}
err := GLOAB_DB.Select(clause.Associations).Delete(paper).Error
if err != nil {
return
}
}
运行之后,查看数据库结果
和我想要的需求一模一样