sql >> Databáze >  >> RDS >> Mysql

Sebeodkazování ManyToMany Typ vztahuORM

Můžete se sami řídit svými vztahy. Zde je příklad jednoduchého orientovaného grafu (aka uzel může mít rodiče a více potomků).

@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[];
}

Důležitá poznámka, kterou je třeba mít na paměti, je, že tyto vztahy nejsou automaticky načteny při čtení objektu z DB pomocí find* funkce.

Chcete-li je skutečně načíst, musíte v tuto chvíli použít nástroj pro tvorbu dotazů a připojit se k nim. (Můžete se připojit k více úrovním.) Příklad:

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

Všimněte si prosím, jak jsem na ně použil různá jména (category , product a addon ).



  1. Zabalte některé vstupy do zaškrtávacího políčka a odešlete do databáze

  2. Zaseknutý přístup odepřen pro uživatele 'root'@'localhost' - Terminál, Mac

  3. Jak získám první datum čtvrtletí v MySQL?

  4. Jak vypočítat čtverec v SQL Server