typeorm关联查询如何筛选关联数据?

作者站长头像
站长
· 阅读数 5
const user = this.userRepository
      .createQueryBuilder('user')
      .leftJoin('user.tel', 'tel')
      .where('user.id = :userId', { userId })
      .getOne();
    return user;

一个user有多个tel,是一对多的关系,现在我只需要查最新的一条即可,没必要把tel全查出来,应该怎么写?

回复
1个回答
avatar
test
2024-06-25
const user = await this.userRepository
  .createQueryBuilder('user')
  .leftJoinAndSelect( // 注意这里用了 'leftJoinAndSelect' 而不只是 'leftJoin'
    'user.tel', 
    'tel', 
    'tel.createdDate = (SELECT MAX(t.createdDate) FROM TelEntity t WHERE t.userId = user.id)' 
    // 假设 tel 表的实体名为 'TelEntity',且 tel 表里与 user 表关联的字段名是 'userId'
  )
  .where('user.id = :userId', { userId })
  .getOne();
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容