Как совместить и с книжной полкой или в js построитель запросов? - PullRequest
1 голос
/ 05 марта 2020

У меня проблемы с выяснением того, как добавить несколько запросов "и", которые содержат внутри них запросы 'или'

В результате я хочу получить примерно такой результат:

select * from model where attribute1 = value1 and (attribute2 = value2 or attribute3 = value2) 

Это код, который я сейчас пытаюсь:

let result = await new Model().query(qb => {
   qb.where('attribute1', 'value1')

   qb.where(function () {
      this.where('attribute2', 'value2')
      this.orWhere('attribute3', 'value2')

   })
}).fetchAll()

Но дело в том, что запрос выполняет только первое условие, которое я пишу

Если я поставлю скобку «или» условие сначала вывод:

select * from model where (attribute2 = value2 or attribute3 = value2)

В то время как, если я сначала ставлю нормальное условие, вывод будет:

select * from model where attribute1 = value1

Похоже, что запросы не «дополняются» (если это правильное слово) оператором «и»

Я знаю, что если я использую обычные операторы where, запросы «добавляются»

Пример :

let result = await new Model().query(qb => {
   qb.where('attribute1', 'value1')
   qb.where('attribute2', 'value2')
}).fetchAll()

Выходы:

select * from model where attribute1 = value1 and attribute2 = value2

Есть предложения?

1 Ответ

1 голос
/ 06 марта 2020

Похоже, что я искал неправильный запрос, когда использовал qb.debug(true), и они были очень похожи.

Приведенный выше код работает как задумано. Приносим извинения за доставленные неудобства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...