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

在 GORM GO / GOLANG 中使用运算符 IN

在 GORM GO / GOLANG 中使用运算符 IN

Go
一只斗牛犬 2022-07-11 10:41:18
我正在尝试在 GORM 中执行下一个查询。SELECT * FROM PAINTINGS WHERE in_stock IN (TRUE, FALSE)*in_stock 是布尔值。我知道只有两种类型,但我需要根据用户是否选中两个框进行过滤。在这种情况下,用户检查了第一个而不是第二个。我在文档(https://gorm.io/docs/query.html conditions/string conditions/IN)中找到了一种方法:GetDB().Where("in_stock IN ?", []bool{true, false}).Find(&paintings)...但它不检索信息。结果显示一个空数组。还有另一种方法可以在 GORM 中使用“IN”吗?附加信息:去 1.15.2数据库mysql
查看完整描述

2 回答

?
白猪掌柜的

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

所以,我找到了在 gorm-GO 中使用 IN 的方法。

它只需要在没有 args 作为接口的情况下执行 where。所以我只是执行了嵌入输入参数的查询界面并删除了“?”

这是代码:

s := "in_stock IN (true, false)"
GetDB().Where(s).Find(&paintings)

*我认为这不是一个好习惯,但它确实有效。


查看完整回答
反对 回复 2022-07-11
?
守候你守候我

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

我知道这是一个老问题,但我一直在尝试同样的事情,我认为最好的做法Where("in_stock in(?)", []bool{true, false})是Where("in_stock IN ?", []bool{true, false})


另一个例子 :


func (d *DBAccess) GetRefOrderList(status []int8) (refOrders []models.RefOrders, err error) {


err = d.Table("ref_orders").Where("status in (?)",status).

    Find(&refOrders).Error


return

}


查看完整回答
反对 回复 2022-07-11
  • 2 回答
  • 0 关注
  • 667 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号