登录
首页 >  Golang >  Go问答

golang gorm 自定义预加载 正确用法是什么?

来源:SegmentFault

时间:2023-01-09 21:26:55 333浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《golang gorm 自定义预加载 正确用法是什么?》,聊聊go,我们一起来看看吧!

问题内容

// 首页活动模块区域分类表模型
type LabelType struct {
    Model
    Id           int    `json:"id";gorm:"primary_key"`
    MallId       int    `json:"mall_id"`
    Status    int    `json:"-"`
    Name         string `json:"name"`
    Weigh        int    `json:"weigh"`  // 权重
    GoodsList []Goods `gorm:"ForeignKey:LabelId" json:"goods_list"` //查询当前分类下的商品集合
}

type Goods struct {
    Model
    GoodsId         int               `json:"goods_id" gorm:"primary_key"`
    MallId          int               `json:"mall_id"`     // 商城id
    LabelId         int               `json:"label_id"`    // 关联mall_label_type
    GoodsName       string            `json:"goods_name"`  // 商品名称
    CategoryId      int               `json:"category_id"` // 分类id
    SmallImage      string            `json:"small_image"` // 商品缩略图
    Images          string            `json:"images"`
    Category        Category `gorm:"foreignkey:CategoryID" json:"category"` //分类表
}

func (labelModel *LabelType) GetAll(params *request.IndexParams) (labelTypes []*LabelType) {
err := db.Debug().Model(&labelTypes).
        Preload("GoodsList", func(query *gorm.DB) *gorm.DB {
            return query.Order("goods_id desc")
        }).
        Preload("GoodsList.Category").
        Where("mall_id = ? and status = ?", params.MallId, "normal").Order("weigh desc").
        Find(&labelTypes).Error
    if err != nil && err != gorm.ErrRecordNotFound {
        return nil
    }
    return labelTypes
}

加 func(query gorm.DB) gorm.DB { return query.Order("goods_id desc")} 就会报错
invalid query condition: 0xa6f620

不加这个是可以正常查询的

正确答案

问题已解决,原因是因为gorm 用了 v1 和 v2 2个版本

今天关于《golang gorm 自定义预加载 正确用法是什么?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表