随笔 - 35  文章 - 20 评论 - 0 阅读 - 3497
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

models->student.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"
}
models->lesson.go
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"
}
models->lessonStudent.go
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,
    })
 
}

  

posted on   KOA2后端  阅读(215)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示