Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Samoodnoszący się typ relacji wiele do wieluORM

Możesz odnieść się do swoich relacji. Oto przykład prostego grafu skierowanego (czyli węzeł może mieć rodzica i wiele dzieci).

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

Ważną uwagą, o której należy pamiętać, jest to, że te relacje nie są automatycznie ładowane podczas odczytywania obiektu z bazy danych za pomocą find* funkcje.

Aby faktycznie je załadować, musisz w tym momencie użyć kreatora zapytań i dołączyć do nich. (Możesz dołączyć do wielu poziomów.) Przykład:

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

Zwróć uwagę, w jaki sposób użyłem różnych nazw, aby się do nich odnieść (category , product i 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. Jak zmapować znacznik czasu hibernacji na MySQL BIGINT?

  2. Zapytanie SQL wielu tabel, z wieloma sprzężeniami i polem kolumny z listą oddzieloną przecinkami

  3. Konfiguracja MySQL / CodeIgniter na OpenShift

  4. #1139 – Otrzymano błąd „operand operatora powtórzeń nieprawidłowy” z wyrażenia regularnego

  5. Podłączanie formularza html do strony php zgodnie z kluczem podstawowym