众所周知,使用relations
可以查询具有关系ManyToMany
的数据。但是如何在多个ManyToMany
中进行查询?也许您很困惑,请让我向您解释。
@Entity()
export class Article {
@ManyToMany(type => Classification, classification => classification.articles)
classifications: Classification[];
@ManyToMany(type => User, user => user.articles)
users: User[];
}
@Entity()
export class Classification {
@ManyToMany(type => Article, article => article.classifications)
@JoinTable()
articles: Article[];
}
@Entity()
export class User {
@ManyToMany(type => Article, article => article.users)
@JoinTable()
articles: Article[];
}
现在我想使用classificationRepository
来查询与Article
相关的数据,而Article
应该与User
相关。
但是idk怎么做。
答案 0 :(得分:1)
您可以将多个联接一起添加。首先,加入文章,然后为用户参考第二次加入的文章:
this.categoryRepository.createQueryBuilder('classification')
.leftJoinAndSelect(
'classification.articles',
'article',)
.leftJoinAndSelect(
'article.users',
'user')
.where('article.id = :id', { id: '1' })
.getMany();
答案 1 :(得分:0)
如果文章与类别具有双向的多对多关系,而您想获取该类别的文章。您可以加载类别中的文章,然后将其退回
const category = await this.categoryRepository.findOne(params.id, {
relations: ["articles"]
});
return category.articles