1 回答
![?](http://img1.sycdn.imooc.com/54586453000163bd02200220-100-100.jpg)
TA贡献1852条经验 获得超7个赞
您的Search Condition没有问题。您只需在第二次迭代的查询中提供多个 ID。一个在Where另一个在Find。
让我写一个像你这样的例子
ids := []int{1, 2}
var org database.Organization
for _, i := range ids {
db, _ := connection.NewPGConnection(info)
db = db.Debug().New()
db.Where("id = ?", i).Find(&org)
}
这里,第一次迭代的 SQL 查询如下:
SELECT * FROM "organizations" WHERE "organizations"."deleted_at" IS NULL AND ((id = '1'))
在第二次迭代中它将是:
SELECT * FROM "organizations" WHERE "organizations"."deleted_at" IS NULL AND "organizations"."id" = '1' AND "organizations"."code" = 'mir' AND ((id = '2'))
为什么?因为,您使用了相同的变量day来读取行结果。
第一次,没关系。但是第二次,您的day 变量中已经有一个 ID。并且您在Where. 这就是为什么,它的运行查询有两个 id。
您实际上提供了两个id,一个在where子句中,另一个在中Find。
更改您的代码以每次都重新声明您的变量日。像这样。
ids := []int{1, 2}
for _, i := range ids {
db, _ := connection.NewPGConnection(info)
db = db.Debug().New()
var org database.Organization // <----- move your variable day here
db.Where("id = ?", i).Find(&org)
}
每次都会使用新的和干净的变量。你的问题将得到解决。
谢谢。希望对你有帮助。
- 1 回答
- 0 关注
- 180 浏览
添加回答
举报