1. 程式人生 > 其它 >Gin GORM 多表聯查

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

}