0

我需要从我的数据库中获取具有几个条件的数据:后端将接收到的两个不同字符串的匹配,但每个字符串都可以在表的一行内的 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();
4

1 回答 1

0

为了解释 typeorm 的工作原理,它将获得匹配所有位置的行,并且在您的情况下,它将在哪里找到任何匹配的行(城市和专业),

但问题是它会得到与 orWhere 匹配的任何东西,并忽略任何其他条件,因此它将获取与 state 或occupation_area 匹配的任何东西,

所以你必须将你的条件分成 orWhere 的括号,如下所示: (condition1 AND condition2) OrWhere (condition3 AND condition4)

于 2021-03-05T21:31:12.337 回答