Mysql
 sql >> база данни >  >> RDS >> Mysql

Самореферентни ManyToMany Тип връзкаORM

Можете сами да се справите с вашите отношения. Ето пример за проста насочена графика (известна още като възел може да има родител и няколко деца).

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

Важна забележка, която трябва да имате предвид е, че тези отношения не се зареждат автоматично при четене на обект от DB с find* функции.

За да ги заредите реално, трябва да използвате конструктора на заявки в момента и да се присъедините към тях. (Можете да се присъедините към няколко нива.) Пример:

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

Моля, обърнете внимание как използвах различни имена, за да ги позовавам (category , product и addon ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Колко място използва полето NULL?

  2. Съхраняване на информация за времето:Необходима ли е часова зона?

  3. Пролетна транзакция и връщане назад на множество таблици

  4. Mysql - Сумиране на броя на множество свързани таблици

  5. Как да търся редове, съдържащи подниз?