typeorm关联查询某个数据项的total应该怎么写?
const user = this.userRepository
.createQueryBuilder('user')
.leftJoin('user.tel', 'tel')
.addSelect('COUNT(DISTINCT tel.id)', 'totalTel')
.groupBy('user.id')
.getOne();
return user;
一个user有多个tel,是一对多的关系,现在我需要查询某个user,并且关联出tel的数量,上面的写法,user没有totalTel字段。
{
id:1,
userName: 'aaa'
}
而改成getRawOne就有totalTel字段,但是其他字段都是数据库定义的下划线,而非驼峰的形式。
{
id:1,
user_name: 'aaa',
totalTel: 1,
}
getOne应该怎么增加totalTel字段。
回复
1个回答
test
2024-06-25
async findOneWithTelCount(userId: number): Promise<any> {
const rawData = await this.userRepository
.createQueryBuilder('user')
.leftJoin('user.tel', 'tel')
.select([
'user.id AS id',
'user.userName AS userName',
'COUNT(DISTINCT tel.id) AS totalTel'
])
.where('user.id = :userId', { userId }) // 如果你有过滤条件,比如获取特定的 user
.groupBy('user.id')
.getRawOne();
if (!rawData) return null;
return {
id: rawData.id,
userName: rawData.userName,
totalTel: +rawData.totalTel
};
}
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容