什么是别名?

我们使用createQueryBuilder("user")。 但什么是”user”?它只是一个常规的 SQL 别名。我们在任何地方都使用别名,除非我们处理选定的数据。

createQueryBuilder("user") 相当于:

  1. createQueryBuilder()
  2. .select("user")
  3. .from(User, "user");

这会生成以下 sql 查询:

  1. SELECT ... FROM users user

在这个 SQL 查询中,users是表名,user是我们分配给该表的别名。

稍后我们使用此别名来访问表:

  1. createQueryBuilder()
  2. .select("user")
  3. .from(User, "user")
  4. .where("user.name = :name", { name: "Timber" });

以上代码会生成如下 SQL 语句:

  1. SELECT ... FROM users user WHERE user.name = 'Timber'

看到了吧,我们使用了在创建查询构建器时分配的user别名来使用 users 表。

一个查询构建器不限于一个别名,它们可以有多个别名。每个选择都可以有自己的别名,你可以选择多个有自己别名的表,你可以使用自己的别名连接多个表。你也可以使用这些别名来访问选择的表(或正在选择的数据)。