什么是别名?
我们使用createQueryBuilder("user")
。 但什么是”user”?它只是一个常规的 SQL 别名。我们在任何地方都使用别名,除非我们处理选定的数据。
createQueryBuilder("user")
相当于:
createQueryBuilder()
.select("user")
.from(User, "user");
这会生成以下 sql 查询:
SELECT ... FROM users user
在这个 SQL 查询中,users
是表名,user
是我们分配给该表的别名。
稍后我们使用此别名来访问表:
createQueryBuilder()
.select("user")
.from(User, "user")
.where("user.name = :name", { name: "Timber" });
以上代码会生成如下 SQL 语句:
SELECT ... FROM users user WHERE user.name = 'Timber'
看到了吧,我们使用了在创建查询构建器时分配的user
别名来使用 users 表。
一个查询构建器不限于一个别名,它们可以有多个别名。每个选择都可以有自己的别名,你可以选择多个有自己别名的表,你可以使用自己的别名连接多个表。你也可以使用这些别名来访问选择的表(或正在选择的数据)。