类型ORM "OR" "AND "运算符组合



我不知道如何在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")

相关内容

  • 没有找到相关文章

最新更新