Цель: с помощью golang lib GORM.io попытаться сгенерировать предложение WHERE ( программно ) с (потенциально несколькими) предложениями ИЛИ , сгруппированными вместе .
Пример:
Bad
SELECT * FROM ... WHERE (x = 'one') OR (y = 'two') OR (z = 'three')
Хорошо
SELECT * FROM ... WHERE (x = 'one' AND (y = 'two' OR z = 'three'))
я ...
- прочитайте документацию GORM от начала до конца
- посмотрел исходный код GORM; и попытался сделать это с помощью Scopes (), SubQuery () и Expr (), чтобы извлечь только (то, что GORM внутренне называется полем «поиск») и автоматически генерировать строку SQL
- прочесал глубины переполнения стека для ответа на этот
- решил сдаться и стать пастухом в Новой Зеландии
Последняя попытка и как я думаю что-то вроде этого будет решено ... иш.
q := gorm.DB
q.Where(`x=?`, `one`).Where(
gorm.<NewScopeMaybe?).Or(`y=?`, `two`).Or(`z=?`,`three`).Expr()
)
Если у кого-то есть понимание, я не куплю тебе пива, но я буду чертовски высоко отзываться о твоем ответе и скажу моей маме зарегистрироваться на переполнение стека, чтобы она тоже могла проголосовать за твой ответ.