• 什么是别名?

    什么是别名?

    我们使用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 表。

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