为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
四季花海 2023-01-03 15:36:26
我有一个显示的功能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"`    ...}
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

您可以尝试自定义预加载来修改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})

    }

}


查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信