У меня есть таблица User, определенная в Typeorm, как показано ниже
@Entity({ name: 'users' })
export class UserEntity {
@PrimaryGeneratedColumn()
user_id: number;
@Column({ name: 'name', type: 'varchar', length: 128 })
name: string;
@Column({ name: 'dob', type: 'timestamp with time zone', nullable: true })
dob: string;
@Column({ name: 'email', type: 'varchar', length: 128, nullable: true })
email: string;
@Column({ name: 'phone_number', type: 'varchar', length: 56, nullable: true })
phone_number: string;
}
И две сущности представления: Родитель и Учитель, которые содержат свойства от Пользователя
@ViewEntity({
expression: `
SELECT u.user_id AS user_id,
u.name AS name,
u.dob AS dob,
u.email AS email,
FROM users u
LEFT JOIN authentications auth ON u.user_id=auth.user_id
WHERE auth.role_name='${RoleEum.TEACHER}'
`
})
export class TeacherViewEntity {
@ViewColumn()
@PrimaryColumn()
user_id: number;
@ViewColumn()
name: string;
@ViewColumn()
dob: string;
@ViewColumn()
email: string;
}
@ViewEntity({
expression: `
SELECT u.user_id AS user_id,
u.name AS name,
u.dob AS dob,
u.phone_number AS phone_number,
FROM users u
LEFT JOIN authentications auth ON u.user_id=auth.user_id
WHERE auth.role_name='${RoleEum.TEACHER}'
`
})
export class ParentViewEntity {
@ViewColumn()
@PrimaryColumn()
user_id: number;
@ViewColumn()
name: string;
@ViewColumn()
dob: string;
@ViewColumn()
phone_number: string;
}
Учитель или Родитель могут быть в каком-то классе (это отношение «многие ко многим»):
@Entity({ name: 'users_in_classes' })
export class UsersInClassesEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
user_id: number;
@ManyToOne(type => UserEntity)
@JoinColumn({ name: 'user_id' })
user: UserEntity;
@ManyToOne(type => ClassroomEntity)
@JoinColumn({ name: 'classroom_id' })
classroom: ClassroomEntity;
@Column()
classroom_id: number;
@Column({ name: 'user_role', type: 'varchar' })
user_role: string; // 'teacher' or 'parent'
}
Вопрос в том, как вернуть учителя в классе или родителя в классе в виде представления учителя (TeacherViewEntity) или представления родителей (ParentViewEntity). основываться на user_role ('teacher' или 'parent') из UsersInClassesEntity?