J'ai une entité Singer et une entité Song associée
entité chanteuse
export class Singer {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@OneToMany( type => Song, Song => Song.user )
songs: Song[];
}
entité Song
export class Song {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@ManyToOne( type => Singer, Singer => Singer.songs )
singer: Singer;
}
Je veux obtenir tous les Songs
classés par Singer
nom
J'ai cherché dans les documents et les problèmes de github mais je ne trouve pas de réponse Comment puis-je résoudre ce problème? mieux sans QueryBuilder
Vous n'êtes pas obligé d'utiliser le générateur de requêtes si vous êtes prêt à effectuer la commande en mémoire en déléguant la tâche à une bibliothèque comme lodash .
De cette façon, vous pouvez toujours utiliser le EntityManager
ou un Repository
pour interroger les données.
// first fetch the song and include (=join) the
// singer by the foreign key "singer"
var queryResult = await this.entityManager.find(Song, {
relations: ['singer'],
});
// then use a library like lodash to do the ordering
const songsSortedBySinger = _.orderBy(queryResult, song => song.singer.name);
Pour en savoir plus:
relations
est documentée ici .