Gorm如何一键删除关系

10 篇文章 0 订阅
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
	}
}

运行之后,查看数据库结果

和我想要的需求一模一样 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值