Bạn có thể tự tham khảo các mối quan hệ của mình. Đây là một ví dụ về biểu đồ có hướng đơn giản (hay còn gọi là một nút có thể có một nút cha và nhiều nút con).
Lớp xuất@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[];
}
Một lưu ý quan trọng cần ghi nhớ là các quan hệ này không được tải tự động khi đọc một đối tượng từ DB với find*
các chức năng.
Để thực sự tải chúng, bạn phải sử dụng trình tạo truy vấn vào lúc này và kết hợp chúng. (Bạn có thể tham gia nhiều cấp độ.) Ví dụ:
let allServices = await this.repository.createQueryBuilder('category')
.andWhere('category.price IS NULL')
.innerJoinAndSelect('category.children', 'product')
.leftJoinAndSelect('product.children', 'addon')
.getMany();
Vui lòng lưu ý cách tôi sử dụng các tên khác nhau để tham chiếu chúng (category
, product
và addon
).