Comme nous le savons tous, utilisez relations pour interroger des données qui ont une relation ManyToMany. Mais comment interroger en multiple ManyToMany ? Peut-être que vous êtes confus, s'il vous plaît laissez-moi vous expliquer.

@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[];
}

Maintenant, je veux utiliser classificationRepository pour interroger les données se rapportent Article, et le Article devrait se rapporter User.

Mais je ne sais pas comment faire.

3
Eve 10 mars 2019 à 16:11

2 réponses

Meilleure réponse

Vous pouvez ajouter plusieurs jointures ensemble. Tout d'abord, joignez les articles, puis référencez les articles dans votre deuxième jointure pour les utilisateurs :

this.categoryRepository.createQueryBuilder('classification')
  .leftJoinAndSelect(
    'classification.articles',
    'article',)
  .leftJoinAndSelect(
    'article.users',
    'user')
  .where('article.id = :id', { id: '1' })
  .getMany();
3
Kim Kern 10 mars 2019 à 15:07

Si les articles ont une relation plusieurs-à-plusieurs bidirectionnelle avec les catégories et que vous souhaitez obtenir les articles d'une catégorie. Vous pouvez charger les articles sur la catégorie puis les retourner


const category = await this.categoryRepository.findOne(params.id, {
  relations: ["articles"]
});

return category.articles
0
Stijno24 18 nov. 2019 à 21:06