猿问

如何选择前 N 个元素 Gin-Gorm

我有一个显示的功能Categories,我想用这个Preload方法也显示Products这个类目相关的,但是我不需要所有的产品,只需要5件,我该如何解决这个问题?功能:


func GetAllCategories(c *gin.Context) {

    Categories := []models.Categories{}

    if err := config.DB.Preload("Products").Find(&Categories).Error; err != nil {  

        c.JSON(http.StatusInternalServerError, err.Error())

    } else {

        c.JSON(http.StatusOK, gin.H{"data": &Categories})

    }

}

类别:


type Categories struct {

    ID         uint       `json:"ID" gorm:"primaryKey"`

    Title      string     `json:"title"`

    ...

    Products   []Products `gorm:"foreignKey:CategoriesRefer" json:"products"`

}

产品:


type Products struct {

    gorm.Model

    CategoriesRefer   int64      `json:"cat_id" gorm:"column:cat_id"`

    Title             string     `json:"title" gorm:"column:title"`

    ...

}


四季花海
浏览 72回答 1
1回答

holdtom

您可以尝试自定义预加载来修改Preload函数的加载方式Products。代码应如下所示:func GetAllCategories(c *gin.Context) {    Categories := []models.Categories{}    err := config.DB.Preload("Products", func(db *gorm.DB) *gorm.DB {             return db.Limit(5)           }).Find(&Categories).Error     if err != nil {          c.JSON(http.StatusInternalServerError, err.Error())    } else {        c.JSON(http.StatusOK, gin.H{"data": &Categories})    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答