You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GORM中基于int数组构建查询,实现多分类商品获取

解决GORM中数组参数的IN查询问题

你当前的问题出在查询条件的写法上:用cat_id=?传入数组参数时,GORM会把数组转成(1,2),导致生成的SQL变成cat_id=(1,2)——这是在匹配cat_id等于整个元组(1,2)的记录,而非cat_id属于1或2的记录,自然查不到目标数据。

正确的做法是使用IN查询,把条件改成cat_id IN ?,GORM会自动将数组参数解析成IN (1,2)的格式,符合你的需求。

修改后的完整函数代码如下:

func GetAllIproducts(q *models.Products, pagination *models.Params) (*[]models.Products, error) {
    var prod []models.Products
    offset := (pagination.Page - 1) * pagination.Limit
    // 替换查询条件为IN语法
    result := config.DB.Model(&models.Products{}).Where(q).Where("cat_id IN ?", pagination.Cat_id).Limit(pagination.Limit).Offset(offset).Find(&prod)
    if result.Error != nil {
        return nil, result.Error
    }
    return &prod, nil
}

额外注意:要确保pagination.Cat_id是int类型的切片/数组,如果前端传入的是字符串格式的"1,2",你需要先将其分割并转换为int切片,否则GORM无法正确解析参数。

内容的提问来源于stack exchange,提问作者Casper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 19:54:27