TypeORM @OneToMany() /@ManyToOne() 应用示例

@OneToMany()和@ManyToOne()是TypeORM中的装饰器,用于在实体之间建立一对多和多对一的关系。以下是一些使用这些装饰器的应用示例:

用户和订单

用户和订单之间是一对多的关系,一个用户可以有多个订单。订单实体类可以使用@ManyToOne()装饰器引用用户实体类,用户实体类可以使用@OneToMany()装饰器包含多个订单实体类。

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @OneToMany(() => Order, order => order.user)
  orders: Order[];
}

@Entity()
export class Order {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToOne(() => User, user => user.orders)
  user: User;
}

课程和学生

课程和学生之间是多对一的关系,多个学生可以选择同一个课程。课程实体类可以使用@OneToMany()装饰器包含多个学生实体类,学生实体类可以使用@ManyToOne()装饰器引用课程实体类。

@Entity()
export class Course {
  @PrimaryGeneratedColumn()
  id: number;

  @OneToMany(() => Student, student => student.course)
  students: Student[];
}

@Entity()
export class Student {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToOne(() => Course, course => course.students)
  course: Course;
}

团队和成员

团队和成员之间也是一对多的关系,一个团队可以有多个成员。成员实体类可以使用@ManyToOne()装饰器引用团队实体类,团队实体类可以使用@OneToMany()装饰器包含多个成员实体类。

@Entity()
export class Team {
  @PrimaryGeneratedColumn()
  id: number;

  @OneToMany(() => Member, member => member.team)
  members: Member[];
}

@Entity()
export class Member {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToOne(() => Team, team => team.members)
  team: Team;
}