我不知道如何在typeOrm where子句中使用OR条件,到目前为止找不到解决方案。
我有一个数据库调用,如下
db.getRepository(MyModel).find({
where:{
type : "new",
status: "A"
region: "central"
zip_code: "4831"
}
})
我需要修改上面的调用,与下面的SQL查询相同
select * from model where type="new" and status="A" and (region="central" or zip_code="4831");
您可以使用typeorm的createQueryBuilder。你可以在这里检查括号的使用情况。您可以在任何需要使用OR条件的地方使用orWhere。通过查询,您可以使用以下代码:
createQueryBuilder("MyModel")
.where("MyModel.type = :type", { type: "new" })
.andWhere("MyModel.status = :status", { status: "A" })
.andWhere(
new Brackets((qb) => {
qb.where("MyModel.region = :region", {
region: "central",
}).orWhere("MyModel.zip_code = :zip", { zip: "4831" });
})
);
这将导致SQL查询:
select * from model where type="new" and status="A" and (region="central" or zip_code="4831");
您可以使用查询生成器,但如果目标是只使用查找操作,则可以执行以下
db.getRepository(MyModel).find({
where: [
{
type : "new",
status: "A",
region: "central"
},
{
type : "new",
status: "A",
zip_code: "4831"
},
]
})
当您提供where
条件列表时,它被视为OR
操作。
虽然最终结果是一样的,但这不会产生您想要的确切查询。这将是
select * from model
where
(type="new" and status="A" and region="central")
OR
(type="new" and status="A" and zip_code="4831")