Gin GORM 多表聯查
package admin
import (
"15_gin_demo15/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,
})
}