我有 2 个实体,如下所示。我想得到团队的名字
匹配实体
关于
first_team_id 和 second_team_id
从
团队实体
@Entity()
export class TeamsEntity {
@PrimaryGeneratedColumn("increment")
team_id: number;
@Column({unique: true})
@IsString()
team_name: string;
}
first_team_id 和 second_team_id 与 team_id 相同。
@Entity()
export class MatchesEntity {
@PrimaryColumn()
@IsNumber()
first_team_id: number;
@PrimaryColumn()
@IsNumber()
second_team_id: number;
@Column()
@IsNumber()
first_team_score: number;
@Column()
@IsNumber()
second_team_score: number;
}
我找到了这样的解决方案
async getSingleMatchHistoryService(teamId: string): Promise<MatchesEntity[]> {
return await getManager().createQueryBuilder(MatchesEntity,"mt")
.select("mt.first_team_score","FirsTeamScore")
.addSelect("mt.second_team_score","SecondTeamScore")
.addSelect("te.team_name","FirsTeamName")
.addSelect("te2.team_name","SecondTeamName")
.leftJoin(TeamsEntity,"te","te.team_id=mt.first_team_id")
.leftJoin(TeamsEntity,"te2","te2.team_id=mt.second_team_id")
.where(`mt.first_team_id=${teamId} or mt.second_team_id=${teamId}`)
.getRawMany()
);
但是,如果我像这样使用 typeorm,我可以使用原始 sql。有没有其他方法可以解决它?