[英]How to make Typeorm QueryBuilder work for AND and OR inside AND operators?
Hi I have written the following Typeform Querybuilder code...嗨,我已经编写了以下 Typeform Querybuilder 代码...
queryBuilder.andWhere('tdm.type =:type', { type: filters.type })
queryBuilder.andWhere('tdm.form =:form', { form: filters.formId })
if (filters.orLeadId && filters.orSupportId) {
queryBuilder.andWhere(subQb => {
subQb.where('tdm.leadId = :lead', { lead: filters.orLeadId }),
subQb.orWhere('tdm.supportId = :support', {
support: filters.orSupportId,
})
})
}
But it results in neglecting the andWhere Operators and results in the following query但它会导致忽略 andWhere 运算符并导致以下查询
SELECT "tdm"."id" AS "tdm_id", "tdm"."form_id" AS "tdm_form_id" FROM "tdm" "tdm" WHERE "tdm"."lead_id" = $1 OR "tdm"."support_id" = $2
Can anyone help me to get the above code right please!!!谁能帮我把上面的代码弄好!!!
I refactored the code as follows我重构代码如下
if (filters.orLeadId && filters.orSupportId) {
queryBuilder.andWhere(
new Brackets(subQb => {
subQb
.where('tdm.leadId = :lead', { lead: filters.orLeadId })
.orWhere('tdm.supportId = :support', {
support: filters.orSupportId,
})
})
)
I followed TypeORM find where conditions AND OR chaining and its working like a charm我跟着TypeORM 找到条件 AND OR 链接及其工作方式就像一个魅力
I think new Brackets
will have to be used here so the clause containing the two conditions to be OR'ed are inside the brackets after AND
as it would be when writing in plain SQL我认为这里必须使用
new Brackets
,因此包含两个要进行或运算的条件的子句位于AND
之后的括号内,就像用普通 SQL 编写时一样
queryBuilder
.andWhere('tdm.type =:type', { type: filters.type })
.andWhere('tdm.form =:form', { form: filters.formId })
if (filters.orLeadId && filters.orSupportId) {
queryBuilder.andWhere(
new Brackets(subQb => {
subQb
.where('tdm.leadId = :lead', { lead: filters.orLeadId })
.orWhere('tdm.supportId = :support', { support: filters.orSupportId })
})
)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.