【发布时间】:2020-10-02 16:40:28
【问题描述】:
我正在尝试使用其关系中的条件 find() 存储库。
(node:16719) UnhandledPromiseRejectionWarning: EntityColumnNotFound: No entity column "order.paid" was found.
关系如下:
订单.ts
@Entity('orders')
export class Order extends BaseModel {
@PrimaryGeneratedColumn('uuid')
@ApiProperty({ description: 'The Order ID' })
id: string;
// The Payment is finished or not
@Column('boolean', { nullable: false, default: false })
@ApiProperty({ description: 'Payment Confirmation for Database side' })
paid: boolean;
// The Items
@OneToMany(type => Item, item => item.order, { nullable: false, eager: true, cascade: ['insert', 'update', 'remove'] })
@ApiProperty({ description: 'The Order Items', isArray: true, type: Item })
items: Item[];
}
Item.ts
export class Item extends BaseModel {
@PrimaryGeneratedColumn('uuid')
@ApiProperty({ description: 'The Item UUID' })
id: string;
@ManyToOne(type => Order, order => order.items, { nullable: false })
@JoinColumn()
order: Order;
// The Shipping is finished or not
@ApiProperty({ description: 'Shipped Indicator' })
@Column('boolean', { nullable: false, default: false })
shipped: boolean;
}
查找代码如下:
await this.payments.items.find({ where: { createdAt: Between(from, to), 'order.paid': true, shipped: true }, order: { createdAt: 'ASC' } });
我尝试了以下变体:
await this.payments.items.find({ where: { createdAt: Between(from, to), order:{ paid:true}, shipped: true }, order: { createdAt: 'ASC' } });
const items = await this.payments.items.createQueryBuilder("item")
.leftJoinAndSelect("order.paid","order")
.where("order.paid = :paid AND item.shipped = :shipped", { paid:true , shipped: true})
.getMany();
但它们都不起作用,
我了解将 Item 存储库更改为 Eager 评估可能会使其工作,但 typeorm 会禁用循环 Eager 声明。
【问题讨论】:
标签: typescript typeorm