Gin GORM 多表聯查
阿新 • • 發佈:2021-10-28
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, }) }