How to search for a word in a column of 2 different repositories using one query (MySQL with TYPEORM and Nestjs)
P粉122932466
P粉122932466 2024-02-26 15:52:00
0
1
283

I'm using MySQL and Typeorm in the latest version of nestjs and I have the following entities:

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 Filter query

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)
}

offer.service.ts Quote Filter

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)
}

Each query is working fine, but what I want to do is combine these two queries into one query so that I can get the search results from the store and the offer and sort the records and then apply skip and accept them. Is there any way to do this?

P粉122932466
P粉122932466

reply all(1)
P粉410239819

TypeORM enables you to use any query you want. Use entityManager.query() This is documentation. p>

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!