我有一个实体“交易”,它有一个相关的实体“客户”。我想加载与交易相关的客户。
它是这样工作的:
Repository.find({ relations: ['customer'] });
Run Code Online (Sandbox Code Playgroud)
但我想做一个更复杂的查询,所以我使用 QueryBuilder
Rrepository.createQueryBuilder('t')
.leftJoin( /*...*/ )
.where( /*...*/ })
.getOne();
Run Code Online (Sandbox Code Playgroud)
这将返回与null客户的交易。
我的实体是:
@Entity()
export default class Transaction {
...
@ManyToOne(type => Customer, c => c.transactions, { nullable: true, eager: true })
public customer?: Customer;
...
}
Run Code Online (Sandbox Code Playgroud)
和
@Entity()
export default class Customer {
...
@OneToMany(type => Transaction, t => t.customer)
@JoinColumn({ name: 'cust_id', referencedColumnName: 'cust_id' })
public transactions?: Array<Transaction>;
...
}
Run Code Online (Sandbox Code Playgroud)
如何Transaction使用CreateQueryBuilder命令将交易客户加载到对象上?
Dan*_*tos 19
经过大量测试后,我发现加载关系很简单,但我必须使用leftJoinAndSelect()函数。
context.createQueryBuilder('t')
.leftJoinAndSelect("t.customer", "customer")
.leftJoinAndSelect(/* other joins */)
.where(/* custom where */)
.getOne();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5997 次 |
| 最近记录: |