TypeOrm QueryBuilder 多对一关系 table
TypeOrm QueryBuilder Multiple relations to one table
感谢阅读并提前尝试提供帮助!
我有以下问题。在我的“Offer”实体上,与“User”有多种关系,如下所示:
@ManyToOne(() => User, (user) => user.offers, { nullable: false })
owner: User;
@ManyToMany(() => User, (user) => user.participates, {
nullable: true,
cascade: true,
})
@JoinTable()
participants: User[];
@ManyToMany(() => User, (user) => user.applied, {
nullable: true,
cascade: true,
})
@JoinTable()
applicants: User[];
问题是 - 如何使用查询生成器加载所有这些关系?当我使用 leftJoinAndSelect 时,它会抛出一条错误消息:“QueryFailedError: table name “user” specified more than once”
return await this.getOffersBaseQuery()
.andWhere('o.id = :id', {
id,
})
.leftJoinAndSelect('o.skill', 'skill')
.leftJoinAndSelect('o.owner', 'user')
.leftJoinAndSelect('o.participants', 'user')
.select([
'o',
'skill.id',
'skill.name',
'user.username',
'user.email',
'user.id',
])
.getOne();
以防万一 - 基本查询:
private getOffersBaseQuery() {
return this.offerRepository.createQueryBuilder('o').orderBy('o.id', 'DESC');
}
没关系,这个问题的答案就在 TypeORM 文档中。我所要做的就是为
使用不同的别名
.leftJoinAndSelect('o.participants', 'user')
我用的是:
.leftJoinAndSelect('o.participants', 'participants')
现在觉得自己好傻
感谢阅读并提前尝试提供帮助!
我有以下问题。在我的“Offer”实体上,与“User”有多种关系,如下所示:
@ManyToOne(() => User, (user) => user.offers, { nullable: false })
owner: User;
@ManyToMany(() => User, (user) => user.participates, {
nullable: true,
cascade: true,
})
@JoinTable()
participants: User[];
@ManyToMany(() => User, (user) => user.applied, {
nullable: true,
cascade: true,
})
@JoinTable()
applicants: User[];
问题是 - 如何使用查询生成器加载所有这些关系?当我使用 leftJoinAndSelect 时,它会抛出一条错误消息:“QueryFailedError: table name “user” specified more than once”
return await this.getOffersBaseQuery()
.andWhere('o.id = :id', {
id,
})
.leftJoinAndSelect('o.skill', 'skill')
.leftJoinAndSelect('o.owner', 'user')
.leftJoinAndSelect('o.participants', 'user')
.select([
'o',
'skill.id',
'skill.name',
'user.username',
'user.email',
'user.id',
])
.getOne();
以防万一 - 基本查询:
private getOffersBaseQuery() {
return this.offerRepository.createQueryBuilder('o').orderBy('o.id', 'DESC');
}
没关系,这个问题的答案就在 TypeORM 文档中。我所要做的就是为
使用不同的别名.leftJoinAndSelect('o.participants', 'user')
我用的是:
.leftJoinAndSelect('o.participants', 'participants')
现在觉得自己好傻