TypeORM查找where条件AND OR链接



我正在尝试使用Repository find编写查询,但似乎找不到查询的解决方案。我知道这在查询生成器或Raw((条件下是可能的,但如果可能的话,我想使用Repositoryfind。

我试图实现的条件是field1='string'AND(field2为NULLORfield2>=Date(((

目前唯一适用于我的解决方案是:

where: [
{ param1: 'string', field2: IsNull() },
{ param1: 'string', field2: MoreThenOrEqual(new Date() ) }
]

但这将转换为(field1='string'AND field2为NULL(或(field1='string'OR field2>=Date(((

我试过类似的东西:

where: [
{ param1: 'string', field2: ( IsNull() || MoreThenOrEqual(new Date() ) ) }
]

但我可以让它发挥作用。有人知道我原来的where条件是否可以在不改变查询的情况下完成吗?

仅供参考:我正在使用Typescript和TypeORM。

编辑1.根据评论的请求,我正在使用queryBuilder发布我的当前实现(只是where条件(:

.where('param1 = :var1', {va1: 'string'})
.andWhere(new Brackets(query => {
query.where('field2 IS NULL')
.orWhere('field3 >= NOW()::DATE')
})

类型中有一个Brackets

用法:

const sql = await connection
.createQueryBuilder(User, "user")
.where("user.isAdmin = :isAdmin", { isAdmin: true })
.orWhere(
new Brackets((qb) => {
qb.where("user.firstName = :firstName1", {
firstName1: "Hello",
}).andWhere("user.lastName = :lastName1", {
lastName1: "Mars",
})
}),
)
.orWhere(
new Brackets((qb) => {
qb.where("user.firstName = :firstName2", {
firstName2: "Hello",
}).andWhere("user.lastName = :lastName2", {
lastName2: "Earth",
})
}),
)

相关内容

  • 没有找到相关文章

最新更新