sql >> Database teknologi >  >> RDS >> Mysql

Self-Referencing ManyToMany Relationship TypeORM

Du kan selv henvise til dine relationer. Her er et eksempel på en simpel rettet graf (alias en node kan have en forælder og flere børn).

@Entity()
export class Service extends BaseEntity {

  @PrimaryGeneratedColumn()
  id: number;
  
  @Column()
  @Index({ unique: true })
  title: string;

  @ManyToOne(type => Service, service => service.children)
  parent: Service;

  @OneToMany(type => Service, service => service.parent)
  children: Service[];
}

En vigtig note at huske på er, at disse relationer ikke automatisk indlæses, når du læser et objekt fra DB'en med find* funktioner.

For faktisk at indlæse dem, skal du bruge forespørgselsbyggeren i øjeblikket og slutte dig til dem. (Du kan deltage i flere niveauer.) Et eksempel:

let allServices = await this.repository.createQueryBuilder('category')
  .andWhere('category.price IS NULL')
  .innerJoinAndSelect('category.children', 'product')
  .leftJoinAndSelect('product.children', 'addon')
  .getMany();

Bemærk venligst, hvordan jeg brugte forskellige navne til at henvise til dem (category , product , og addon ).



  1. Sagen om kardinalitetsvurderingen Red Sild

  2. Hvordan afkorter man en tabel ved hjælp af Doktrin 2?

  3. Udførelse af en joinforbindelse på tværs af flere heterogene databaser, f.eks. PostgreSQL og MySQL

  4. Har Oracle en ækvivalent til SQL Servers tabelvariabler?