簡體   English   中英

TypeOrm/PostgreSQL createQueryBuilder:來自連接表的 select 列

[英]TypeOrm/PostgreSQL createQueryBuilder: select column from joined table

我只想 select 我要加入的表中的一列。 separator有一個facility ,一個facility有一個customer ,我想通過提供一個separatorId來 select customer.id

下面是我嘗試過的,但這會返回一個Separator

return await this.separatorRepository
  .createQueryBuilder('separator')
  .select(['customer.companyId'])
  .innerJoin('separator.facility', 'facility')
  .innerJoin('facility.customer', 'customer')
  .where('separator.id = :separatorId', { separatorId })
  .getOne();

如何更改此查詢以獲取customer.id

我想您的連接表沒有被選中,因為您使用的innerJoin方法而不是innerJoinAndSelect 此外,由於getOne返回具有您的實體類型(在您的情況下為Separator )的對象,因此您需要確保正確指定SeparatorFacilityCustomer之間的關系。

實體:

@Entity()
export class Customer {
    @PrimaryColumn()
    id: number;
}

@Entity()
export class Facility {
    @PrimaryColumn()
    id: number;

    @OneToOne(() => Customer)
    @JoinColumn()
    customer: Customer;
}

@Entity()
export class Separator {
    @PrimaryColumn()
    id: number;

    @OneToOne(() => Facility)
    @JoinColumn()
    facility: Facility;
}

詢問:

return await this.separatorRepository
  .createQueryBuilder('separator')
  .innerJoinAndSelect('separator.facility', 'facility')
  .innerJoinAndSelect('facility.customer', 'customer')
  .where('separator.id = :separatorId', { separatorId })
  .getOne();

該查詢為您生成帶有連接實體的Separator實例,因此您可以從那里獲取您的customer.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM