Задать вопрос

Как сделать запрос на поиск по нескольким параметрам TypeOrm?

Условия есть сущность заказ
в нем поля статус, название, описание, основной текст
есть код
queryBuilder
        .where("orders.status = :status", {
          status: query.status,
        })
        .orWhere("orders.title LIKE :title", {
          title: `%${query.name}%`,
        })
        .orWhere("orders.description LIKE :description", {
          description: `%${query.name}%`,
        });


Мне нужно чтобы сортировала по статусу обязательно и одновременно чтобы искало ключевое слово и в названии и в описании и в теле заказа.
Если я ставлю andWhere после Where он будет искать только в названии и искать по статусу, если оставлю как щас то сортировка по статусу отваливается.
  • Вопрос задан
  • 365 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
E1ON
@E1ON Куратор тега JavaScript
Vocaloid lover
Можно использовать калбек во where:
queryBuilder.where("orders.status = :status", {
  status: query.status,
}).andWhere(
  new Brackets((qb) => {
    qb.orWhere("orders.title LIKE :title", {
      title: `%${query.name}%`,
    }).orWhere("orders.description LIKE :description", {
      description: `%${query.name}%`,
    });
  })
);


Либо так:
queryBuilder.where(
  "orders.status = :status AND (orders.title LIKE :title OR orders.description LIKE :description)",
  {
    status: query.status,
    title: `%${query.name}%`,
    description: `%${query.name}%`,
  }
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы