Нет проблем с вашим условием поиска .Просто вы указали несколько идентификаторов в своих запросах со второй итерации.Один в 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 уже имеет идентификатор .И вы должны предоставить еще один в Where
.Вот почему запущен запрос с двумя идентификаторами.
Вы фактически предоставляете два id
, одно в предложении where
и другое в Find
.
Измените код, чтобы каждый раз переопределять переменную day .Вот так.
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)
}
Каждый раз будет использоваться новая и чистая переменная.И ваша проблема будет решена.
Спасибо.Надеюсь, это поможет вам.