使用更优雅的方式来做同样的事情:

    1. const posts = await connection
    2. .getRepository(Post)
    3. .createQueryBuilder("post")
    4. .where(qb => {
    5. const subQuery = qb
    6. .subQuery()
    7. .select("user.name")
    8. .from(User, "user")
    9. .where("user.registered = :registered")
    10. .getQuery();
    11. return "post.title IN " + subQuery;
    12. .setParameter("registered", true)
    13. .getMany();

    你可以在FROM中创建子查询,如下所示:

    1. const userQb = await connection
    2. .getRepository(User)
    3. .createQueryBuilder("user")
    4. .select("user.name", "name")
    5. .where("user.registered = :registered", { registered: true });
    6. const posts = await connection
    7. .createQueryBuilder()
    8. .select("user.name", "name")
    9. .getRawMany();

    如果想添加一个子查询做为”second from”,请使用addFrom

    1. const posts = await connection
    2. .createQueryBuilder()
    3. .select("post.id", "id")
    4. .addSelect(subQuery => {
    5. return subQuery
    6. .select("user.name", "name")
    7. .from(User, "user")
    8. .limit(1);
    9. }, "name")