我有一个基本的查询来检索course
实体,这些实体与student
有一个manyToMany关系,作为registered_students
。我还想Map一个students_count
属性,我设法通过loadRelationCountAndMap
实现。
我不明白的是如何orderBy
那个不是course
实体的列的students_count
值:
return await this.courseRepository
.createQueryBuilder('course')
.where('course.teacherId = :teacherId', { teacherId: teacher.id })
.leftJoin('course.registered_students', 'student')
.addSelect('student.firstName')
.addSelect('student.lastName')
.loadRelationCountAndMap(
'course.students_count',
'course.registered_students',
'students_count',
)
.getMany();
字符串
我知道我不能简单地添加一些.orderBy('course.students_count', 'DESC')
,因为它不引用列,但我找不到一个简单的方法,即使它看起来微不足道。
1条答案
按热度按时间kxeu7u2r1#
这个问题出现在我身上,我的第一个解决方案是这样的,附加到queryBuilder调用return语句:
字符串
一个简单的内存排序。不漂亮,但提供了所需的功能。
也可以在queryBuilder中使用:
型
并确保'studentcount'是传入.orderBy调用的字符串值。您还需要为课程的学生ID添加索引,否则查询将非常慢。