recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment rechercher un mot dans une colonne de 2 référentiels différents en utilisant une seule requête (MySQL avec TYPEORM et Nestjs)

J'utilise MySQL et Typeorm dans la dernière version de nestjs et j'ai les entités suivantes :

shop.entity.ts :

@Entity()
export class Shop {
  @PrimaryGeneratedColumn("uuid")
  id: string;

  @Column({ unique: true, nullable: false })
  name: string;

  @Column({ nullable: true })
  description: string;

  @Column({ default: "" })
  image_url: string;

  @Column({ default: true })
  is_active: boolean;

  @Column({ default: false })
  is_special: boolean;

  @Column({ nullable: false, default: () => "CURRENT_TIMESTAMP" })
  created_at: Date;
}

offer.entity.ts

@Entity()
export class Offer {
  @PrimaryGeneratedColumn("uuid")
  id: string;

  @Column({ nullable: false })
  name: string;

  @Column({ nullable: false })
  fabric: string;

  @Column({ nullable: false })
  code: string;

  @Column({ nullable: false })
  start_date: Date;

  @Column({ nullable: false })
  end_date: Date;

  @Column({ default: "" })
  description: string;

  @Column({ nullable: false, default: () => "CURRENT_TIMESTAMP" })
  created_at: Date;
}

shop.service.ts Filtrer la requête

async filter(filter: FilterShopDto) {
const queryBuilder = this.shopRepository
          .createQueryBuilder("shop")
          .where(
            `shop.description LIKE :description`,
            {
              description: filter.description ? `%${filter.description}%` : "%",
            },
          )
          .orderBy("shop.created_at", "DESC")
          .skip(filter.skip)
          .take(filter.take)
}

offre.service.ts Filtre de devis

async filter(filter: FilterOfferDto) {
const queryBuilder = this.offerRepository
          .createQueryBuilder("offer")
          .where(
            " offer.description LIKE :description",
            {
              description: filter.description ? `%${filter.description}%` : "%", 
            },
          )
          .orderBy(
            "offer.created_at",
            "DESC",
          )
          .skip(filter.skip)
          .take(filter.take)
}

Chaque requête fonctionne bien, mais ce que je veux faire, c'est combiner ces deux requêtes en une seule requête afin de pouvoir obtenir les résultats de la recherche du magasin, proposer et trier les enregistrements, puis appliquer l'option Ignorer et les accepter. Y a-t-il un moyen de le faire ?

P粉122932466P粉122932466367 Il y a quelques jours362

répondre à tous(1)je répondrai

  • P粉410239819

    P粉4102398192024-02-27 10:39:41

    TypeORM vous permet d'utiliser n'importe quelle requête de votre choix. Utilisez entityManager.query() voici la documentation.

    répondre
    0
  • Annulerrépondre