Как динамически установить предложение where в GORM - PullRequest
1 голос
/ 23 октября 2019

Я получу map[string][]string. Для каждого ключа на карте я хочу добавить пункт where, как показано ниже.

inFilter := map[string][]string{"product_id": []string{"3", "69"}}
for key, value := range inFilter {
        filterQuerable = filterQuerable.Where("(?) IN (?)", key, value)
    }

это не работает. Я попробовал ниже, который также не работает

filterQuerable = filterQuerable.Where("(?) IN (?)", "product_id", []string{"3", "69"})

Только ниже работает код

filterQuerable = filterQuerable.Where("product_id IN (?)",  []string{"3", "69"})

1 Ответ

1 голос
/ 23 октября 2019

Теперь я вижу проблему. ? для значений, а не имен столбцов. Если вы можете на 100% доверять источнику входных данных, тогда будет работать простая замена строк. Если вы разрешаете получать данные от пользователей, вы должны быть очень осторожными и проверять / очищать имена столбцов.

Это должно работать.

inFilter := map[string][]string{"product_id": []string{"3", "69"}}
for key, value := range inFilter {
   filterQuerable = filterQuerable.Where(key + " IN (?)", value)
}
...