【发布时间】:2020-05-02 14:32:29
【问题描述】:
我正在使用 typeorm,在查询构建器中使用 leftjoin 命令时,它似乎删除了父结果: '''
var user = await getRepository(Users).createQueryBuilder("user")
.where("user.user_id = :user_id", { user_id: user_id })
.andWhere("user.token = :u_token", { u_token: u_token })
.leftJoinAndSelect("user.devices", "device")
.where("device.token = :d_token", { d_token: d_token })
.andWhere("device.code_tries <= 3")
.andWhere("device.status = 0")
.getMany();
''' 只有存在有效设备时才会返回用户,如果没有找到设备则不会返回“用户”。
顺便说一句,通过删除所有“leftjoin”部分,无论如何都会返回用户对象。 像这样: '''
var user = await getRepository(Users).createQueryBuilder("user")
.where("user.user_id = :user_id", { user_id: user_id })
.andWhere("user.token = :u_token", { u_token: u_token })
.getMany();
'''
左连接应该返回所有用户和匹配的设备(据我所知)。 为什么会这样?
【问题讨论】:
-
只是为了明确,问题是如果没有匹配的设备..用户根本没有返回..在我的第二个代码段中,具有相同的“用户”选择义务,用户返回。