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

Как сделать запрос на поиск по нескольким параметрам 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 он будет искать только в названии и искать по статусу, если оставлю как щас то сортировка по статусу отваливается.
  • Вопрос задан
  • 341 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
E1ON
@E1ON Куратор тега JavaScript
Programming, Gamedev, VR
Можно использовать калбек во 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}%`,
  }
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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