为什么 typeorm 的 leftjoin 中的子查询给我错误?

Why Sub query in leftjoin in typeorm giving me error?

如果我在 leftjoinandselect 的子查询中定义 innerjoin 或 leftjoin,则会出现错误 sqlMessage: "Duplicate column name 'id'".

例如

.leftJoinAndSelect(
            (qb) =>
              qb
                .from(Email, 'email')
                .innerJoin(User, 'user')
                .where('user.account = :account', {
                  accountId: 4,
                }),
            'email',
            '`email`.`id` = 1',
          )

上面会给我错误“重复的列名 'id'”

但如果我删除 innerJoin,那么它工作正常并给出预期结果。

.leftJoinAndSelect(
                (qb) =>
                  qb
                    .from(Email, 'email'),
                'email',
                '`email`.`id` = 1',
              )

知道为什么会给我这个错误。

我认为问题在于 emailuser 表都有 id 列。 你能试试下面的代码吗?:

.leftJoinAndSelect(
            (qb) =>
              qb    
                .select("user.id", "user_id")
                .addSelect("email.id", "email_id")
                // Add whatever you want by .addSelect method
                .from(Email, 'email')
                .innerJoin(User, 'user')
                .where('user.account = :account', {
                  accountId: 4,
                }),
            'email',
            '`email`.`id` = 1',
          )