models->student.go
models->lesson.go
models->lessonStudent.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package models type Student struct { Id int Number string Password string ClassId int Name string Lesson []Lesson `gorm: "many2many:lesson_student;" ` } func (Student) TableName() string { return "student" } |
1 2 3 4 5 6 7 8 9 10 11 | package models type Lesson struct { Id int `json: "id" ` Name string `json: "name" ` Student []Student `gorm: "many2many:lesson_student;" ` } func (Lesson) TableName() string { return "lesson" } |
1 2 3 4 5 6 7 8 9 10 | package models type LessonStudent struct { LessonId int `json: "lesson_id" ` StudentId int `json: "student_id" ` } func (LessonStudent) TableName() string { return "lesson_student" } |
controllers->admin->studentController.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | package admin import ( "gindemo17/models" "github.com/gin-gonic/gin" "gorm.io/gorm" ) type StudentController struct { BaseController } func (con StudentController) Index(c *gin.Context) { //1、获取所有的学生信息 // studentList := []models.Student{} // models.DB.Find(&studentList) // c.JSON(200, gin.H{ // "result": studentList, // }) //2、获取所有的课程信息 // lessonList := []models.Lesson{} // models.DB.Find(&lessonList) // c.JSON(200, gin.H{ // "result": lessonList, // }) //3、查询学生信息的时候 展示学生选修的课程 // studentList := []models.Student{} // models.DB.Preload("Lesson").Find(&studentList) // c.JSON(200, gin.H{ // "result": studentList, // }) // 4、查询张三 以及张三选修了哪些课程 // studentList := []models.Student{} // models.DB.Preload("Lesson").Where("name = ?", "张三").Find(&studentList) // c.JSON(200, gin.H{ // "result": studentList, // }) // 5、查询课程被哪些学生选修了 // lessonList := []models.Lesson{} // models.DB.Preload("Student").Find(&lessonList) // c.JSON(200, gin.H{ // "result": lessonList, // }) // 6、查询计算机网络被哪些学生选修了 // lessonList := []models.Lesson{} // models.DB.Preload("Student").Where("name=?", "计算机网络").Find(&lessonList) // c.JSON(200, gin.H{ // "result": lessonList, // }) // 7、查询数据指定条件 // lessonList := []models.Lesson{} // models.DB.Preload("Student").Offset(1).Limit(2).Order("id desc").Find(&lessonList) // c.JSON(200, gin.H{ // "result": lessonList, // }) // 7、张三被开除了 查询课程被哪些学生选修的时候去掉张三 // lessonList := []models.Lesson{} // models.DB.Preload("Student", "id != ?", 1).Find(&lessonList) // c.JSON(200, gin.H{ // "result": lessonList, // }) // 8、张三 李四都被开除了 查询课程被哪些学生选修的时候去掉张三和李四 // lessonList := []models.Lesson{} // models.DB.Preload("Student", "id not in (1,2)").Find(&lessonList) // c.JSON(200, gin.H{ // "result": lessonList, // }) // 9 查看课程被哪些学生选修 要求:学生 id 倒叙输出 自定义预加载 SQL // https://gorm.io/zh_CN/docs/preload.html lessonList := []models.Lesson{} models.DB.Preload( "Student" , func (db *gorm.DB) *gorm.DB { return models.DB.Where( "id>2" ).Order( "student.id DESC" ) }).Find(&lessonList) c.JSON(200, gin.H{ "result" : lessonList, }) } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具