Gin GORM 多表聯查


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,
	})

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM