我有一个实体“ Transaction”,该实体有一个相关的实体“ Customer”。 我想加载与交易相关的客户。
它是这样的:
Repository.find({ relations: ['customer'] });
但是我想做一个更复杂的查询,所以我使用QueryBuilder
Rrepository.createQueryBuilder('t')
.leftJoin( /*...*/ )
.where( /*...*/ })
.getOne();
这将返回与null
个客户的交易。
我的实体是:
@Entity()
export default class Transaction {
...
@ManyToOne(type => Customer, c => c.transactions, { nullable: true, eager: true })
public customer?: Customer;
...
}
和
@Entity()
export default class Customer {
...
@OneToMany(type => Transaction, t => t.customer)
@JoinColumn({ name: 'cust_id', referencedColumnName: 'cust_id' })
public transactions?: Array<Transaction>;
...
}
如何使用Transaction
命令使用来将交易客户加载到CreateQueryBuilder
对象上?
答案 0 :(得分:0)
经过大量测试,我发现加载关系很简单,但是我必须使用leftJoinAndSelect()
函数。
context.createQueryBuilder('t')
.leftJoinAndSelect("t.customer", "customer")
.leftJoinAndSelect(/* other joins */)
.where(/* custom where */)
.getOne();