const user = this.userRepository
.createQueryBuilder('user')
.leftJoin('user.tel', 'tel')
.where('user.id = :userId', { userId })
.getOne();
return user;
一个user有多个tel,是一对多的关系,现在我只需要查最新的一条即可,没必要把tel全查出来,应该怎么写?
const user = this.userRepository
.createQueryBuilder('user')
.leftJoin('user.tel', 'tel')
.where('user.id = :userId', { userId })
.getOne();
return user;
一个user有多个tel,是一对多的关系,现在我只需要查最新的一条即可,没必要把tel全查出来,应该怎么写?
你可以使用查询关联数据的方法,并在查询中加入筛选条件。具体来说,你可以使用 with
方法来限制查询结果的数量。下面是一个修改后的代码示例:
const user = this.userRepository
.createQueryBuilder('user')
.leftJoin('user.tel', 'tel')
.where('user.id = :userId', { userId })
.with('tel', (qb) => {
qb.orderBy('tel.id', 'desc')
.take(1);
})
.getOne();
return user;
在这个示例中,我们使用了 with
方法来限制 tel
查询结果的数量。在 with
方法中,我们首先对 tel
进行了排序(按照 id
降序排列),然后使用 take(1)
来只获取排序后的第一条记录。这样,我们就可以只获取用户最新的电话号码,而不是所有的电话号码。
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决