TypeORM 查找 where 条件 AND OR 链接

2023-11-30

我正在尝试使用存储库查找来编写查询,但似乎没有找到适合我的查询的解决方案。 我知道这可以通过查询生成器或 Raw() 条件实现,但如果可能的话,我想使用存储库查找。

我想要达到的条件是字段1 = '字符串'AND(字段2为空OR字段2 >= 日期()).

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

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

但这将转化为(field1 = 'string' AND field2 IS NULL) OR (field1 = 'string' OR field2 >= Date())

我尝试过类似的东西:

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

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

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

Edit 1.根据评论的请求,我使用 queryBuilder 发布当前的实现(仅是 where 条件):

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

有一个Brackets在类型中

Usage:

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",
                            })
                        }),
                    )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeORM 查找 where 条件 AND OR 链接 的相关文章

随机推荐