首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在左联接中更改字段名

在左联接中更改字段名
EN

Stack Overflow用户
提问于 2019-08-13 05:02:51
回答 1查看 2.7K关注 0票数 1

我有一个带这个查询的Repo

代码语言:javascript
复制
@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,我想返回一个字段名"fkFlightRefund",但是我得到了“fkFlightRefund”,

我还尝试使用这个左联接:

代码语言:javascript
复制
    .leftJoinAndSelect('refund.fkFlightRefund', 'flights' , 'refund.fkFlightRefund.title = :title',
{ title: 'flight' },)

在搜索了这个问题之后,

我想做的事有可能吗?

任何帮助都行!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-13 14:33:01

你想要的是一个.leftJoinAndMapOne()

因此,您的代码将以如下所示结束:

代码语言:javascript
复制
@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,因此左联接已经将它映射到您想要的名称,尽管如果对列名有约束,这可能是不可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57471381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档