1 回答

TA貢獻1852條經(jīng)驗 獲得超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 查詢?nèi)缦拢?/p>
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 變量中已經(jīng)有一個 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 關注
- 200 瀏覽
添加回答
舉報