如何在 TypeORM 存储库中使用 OR 和 AND 条件

问题描述 投票:0回答:1

我正在研究 NestJS+TypeORM+SQL Server。我想做这样的查询,

SELECT * 
FROM tbl_orders 
WHERE branch_id = 1 
  AND (seller_id = 11 OR seller_id IS NULL);

我的简单代码如下。我不知道如何像上面的查询一样放置

seller_id IS NULL
条件:

const result = await this.productRepository.find({
  where: { branch_id:1, seller_id:11},
  relations: ['seller']
});
nestjs typeorm
1个回答
0
投票

解决此问题的一种方法是将查询重构为:

SELECT * 
FROM tbl_orders 
WHERE (branch_id = 1 AND seller_id = 11) 
   OR (branch_id = 1 AND seller_id IS NULL);

要指定多个条件(OR 运算),我们可以传入所有所需条件的数组而不是条件对象,而要指定 NULL 检查,我们可以使用

IsNull()
运算符函数。

参考:文档

import { IsNull } from 'typeorm';

// ...

const result = await this.productRepository.find({
    where: [
        { branch_id: 1, seller_id: 11 },
        { branch_id: 1, seller_id: IsNull() }
    ],
    relations: ['seller']
});
© www.soinside.com 2019 - 2024. All rights reserved.