当前位置: 首页 > 知识库问答 >
问题:

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

鱼渝
2023-10-22
const user = this.userRepository      .createQueryBuilder('user')      .leftJoin('user.tel', 'tel')      .where('user.id = :userId', { userId })      .getOne();    return user;

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

共有1个答案

蒲坚
2023-10-22

你可以使用查询关联数据的方法,并在查询中加入筛选条件。具体来说,你可以使用 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) 来只获取排序后的第一条记录。这样,我们就可以只获取用户最新的电话号码,而不是所有的电话号码。

 类似资料:
  • 简介 Cabal-DB 的关联数据查询主要用了两个方法:->has('table') 和->belongs('table'), 因为其实数据库关联关系只有两种,一种是拥有(has)另一种是属于(belongs),如: 用户拥有更多个文章 文章拥有多个标签 文章属于一个用户 文章标签关联记录属于一个标签和一篇文章 语法 拥有关系查询语法: $row->has($name, $foreignKeyOr

  • 一个user有多个tel,是一对多的关系,现在我需要查询某个user,并且关联出tel的数量,上面的写法,user没有totalTel字段。 而改成getRawOne就有totalTel字段,但是其他字段都是数据库定义的下划线,而非驼峰的形式。 getOne应该怎么增加totalTel字段。

  • 级联关系是一个数据库实体的概念,有 3 种级联关系,分别是一对一级联、一对多级联以及多对多级联。例如,一个角色可以分配给多个用户,也可以只分配给一个用户。大部分场景下,我们都需要获取角色信息和用户信息,所以会经常遇见以下 SQL。 在级联中存在 3 种对应关系。 一对多的关系,如角色和用户的关系。通俗的理解就是,一家软件公司会存在许多软件工程师,公司和软件工程师就是一对多的关系。 一对一的关系。每

  • 接口说明 为了让用户更清晰的比对场景中的数据,如历史数据对比、规划前后的数据对比等,Wish3DEarth团队新增了查询关联场景的接口,开发者可以通过该接口,来获取主屏与副屏之间的关联性。 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/contrasts/1.0.0/get 是否需要登录 否 请求字段说明 参数 类型 请

  • 本文向大家介绍详解YII关联查询,包括了详解YII关联查询的使用技巧和注意事项,需要的朋友参考一下 一、多表关联的配置 在我们使用 AR 执行关联查询之前,我们需要让 AR 知道一个 AR 类是怎样关联到另一个的。 两个 AR 类之间的关系直接通过 AR 类所代表的数据表之间的关系相关联。 从数据库的角度来说,表 A 和 B 之间有三种关系:一对多(one-to-many,例如 tbl_user