为什么 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',
)
知道为什么会给我这个错误。
我认为问题在于 email
和 user
表都有 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',
)
如果我在 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',
)
知道为什么会给我这个错误。
我认为问题在于 email
和 user
表都有 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',
)