Введите форму поиска с помощью и & или где блок - PullRequest
1 голос
/ 25 мая 2020

Я пытаюсь создать запрос ниже в типовой форме.

SELECT * from Department where
type = 'Employee' and
((from_date BETWEEN '2013-01-03'AND '2013-01-09') OR 
(to_date BETWEEN '2013-01-03' AND '2013-01-09') OR 
(from_date <= '2013-01-03' AND to_date >= '2013-01-09'))

Ниже приведен эквивалент моей типовой формы.

connection.find(Department, {
      where: [
        { fromDate: Between(filter.fromDate, filter.toDate) },
        { toDate: Between(filter.fromDate, filter.toDate) },
        {
          fromDate: LessThanOrEqual(filter.fromDate),
          toDate: MoreThanOrEqual(filter.toDate),
        },
      ],
      andWhere: { type: 'Employee' },
    });

Но почему-то я получаю неправильное количество выходных данных. Это как бы и где не работает. Заранее спасибо

1 Ответ

1 голос
/ 26 мая 2020
let qb = this.repository.createQueryBuilder("department");

qb.where("department.type= :type", {type: "Employee"});
qb.andWhere("((department.from_date BETWEEN '2013-01-03'AND '2013-01-09') OR 
(department.to_date BETWEEN '2013-01-03' AND '2013-01-09') OR 
(department.from_date <= '2013-01-03' AND department.to_date >= '2013-01-09'))");
...