获取数据PostgreSQL TypeORM.多个条件



我需要从我的数据库中获得数据,有两个条件:后端将接收到的两个不同字符串的匹配,但每个字符串都可以在表的一行内的2个不同列中找到。

下面是我尝试的代码,但它只标识了我需要的一个匹配,如果找到了位置,则不过滤专业。

过滤这两种情况的更好方法是什么?

const result = await LawyersRepo.createQueryBuilder("lawyers")
.where("lawyers.city = :city", {
city: location,
})
.orWhere("lawyers.state = :state", {
state: location,
})
.andWhere("lawyers.specialties like :specialties", {
specialties: `${specialty}%`,
})
.orWhere("lawyers.occupation_area like :specialties", {
specialties: `${specialty}%`,
})
.getMany();

来解释typeform是如何工作的,它将获取匹配所有where和where的行在您的示例中,它将找到任何匹配的行(城市和专业),

但是问题是它会获取任何与orWhere匹配的内容,而忽略任何其他条件所以它会获取任何与state或occupation_area匹配的内容

所以你必须把你的条件用orWhere括号括起来,像这样:(条件1 AND条件2)OrWhere(条件3 AND条件4)