如何将 and 与 or 在 bookshelfjs 查询生成器中结合使用?
How to combine and with or in bookshelfjs query builder?
我在弄清楚如何添加包含 'or' 查询的多个 "and" 查询时遇到问题
最后我想要的结果是这样的:
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()
但问题是查询只执行我写的第一个条件
如果我把括号 'or' 条件放在第一位,输出是:
select * from model where (attribute2 = value2 or attribute3 = value2)
虽然如果我把正常条件放在第一位,输出是:
select * from model where attribute1 = value1
这些查询似乎没有 "append"(如果这是正确的词)带有 'and' 语句
我知道如果我使用普通的 where 语句,查询会执行 'append'
示例:
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
有什么建议吗?
看起来我在使用 qb.debug(true)
时看错了查询,它们非常相似。
上面的代码按预期工作。抱歉给您带来不便。
我在弄清楚如何添加包含 'or' 查询的多个 "and" 查询时遇到问题
最后我想要的结果是这样的:
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()
但问题是查询只执行我写的第一个条件
如果我把括号 'or' 条件放在第一位,输出是:
select * from model where (attribute2 = value2 or attribute3 = value2)
虽然如果我把正常条件放在第一位,输出是:
select * from model where attribute1 = value1
这些查询似乎没有 "append"(如果这是正确的词)带有 'and' 语句
我知道如果我使用普通的 where 语句,查询会执行 'append'
示例:
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
有什么建议吗?
看起来我在使用 qb.debug(true)
时看错了查询,它们非常相似。
上面的代码按预期工作。抱歉给您带来不便。