【问题标题】:changing the field name in a leftjoin更改左连接中的字段名称
【发布时间】:2019-08-13 22:33:01
【问题描述】:

我有这个查询的回购

@EntityRepository(Refund)
export class RefundRepository extends Repository<Refund> {
getRefundsByUserId(id: number): Promise<Refund[]> {
return this.createQueryBuilder('refund')
.select([
  'refund.id',
  'refund.userId',
  'refund.amount',
  'refund.createdAt',
  'refund.updatedAt',
])
.leftJoinAndSelect('refund.fkFlightRefund', 'flight')
.leftJoinAndSelect('refund.currency', 'refundCurrency')
.leftJoinAndSelect('refund.status', 'refundStatus')
.where({  userId : id })
.getMany();

}

我的问题是与refund.fkFlightRefund ,我想返回一个字段名称“flight”但我得到“fkFlightRefund”,

我也尝试过使用这个左连接:

    .leftJoinAndSelect('refund.fkFlightRefund', 'flights' , 'refund.fkFlightRefund.title = :title',
{ title: 'flight' },)

在谷歌上搜索问题后,

我想做什么可能吗?

任何帮助都可以!

【问题讨论】:

  • 在以下行中,flight 是表别名,而不是 columnName。 .leftJoinAndSelect('refund.fkFlightRefund', 'flight') > 根据文档,“第一个参数是您要加载的关系,第二个参数是您分配给该关系表的别名。”在实际的select 查询中使用上述别名
  • @SagarChillukuri 我不太明白实际的选择查询是什么,我试图在选择中添加一个“飞行”字段,但它没有改变它

标签: node.js typescript nestjs typeorm


【解决方案1】:

你想要的是.leftJoinAndMapOne()

因此,您的代码将以以下内容结尾:

@EntityRepository(Refund)
export class RefundRepository extends Repository<Refund> {
getRefundsByUserId(id: number): Promise<Refund[]> {
return this.createQueryBuilder('refund')
.select([
  'refund.id',
  'refund.userId',
  'refund.amount',
  'refund.createdAt',
  'refund.updatedAt',
])
.leftJoinAndMapOne('refund.flights','refund.fkFlightRefund', 'flight')
.leftJoinAndSelect('refund.currency', 'refundCurrency')
.leftJoinAndSelect('refund.status', 'refundStatus')
.where({  userId : id })
.getMany();

}

还有一个可选的第四个参数来设置条件,以备不时之需。

请注意,如果您想要映射多个项目(之所以这么说是因为命名,flightS),则应使用.leftJoinAndMapMany,因此它映射一个项目数组。

您代码中的 flight 只是将其映射为查询中其他联接的别名,这就是它不起作用的原因。

另外,另一种选择是将关系名称从fkFlightRefund 重命名为flights,因此左连接已经将其映射到您想要的名称,但如果您对列名有限制,这可能是不可能的.

【讨论】:

    猜你喜欢
    • 2013-03-20
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多