我有一个实体优惠券,其中包含与Packs表的ManyToOne关系。 因此,当我想在优惠券上执行插入时,我首先基于id执行选择查询以获取Pack对象,然后在实际的优惠券插入查询中使用查询结果。 如何直接基于id插入Coupons表中,因为ManyToOne关系仅使新列具有外键约束来打包id。
Currently, i am doing
repos.productCouponsRepository
.createQueryBuilder()
.insert()
.values([{ coupon_code: code, product_pack: <Some product_pack object> }])
.execute();
I want something like
repos.productCouponsRepository
.createQueryBuilder()
.insert()
.values([{ coupon_code: code, product_pack: <Some product_pack id> }])
.execute();
Entites
export class ProductPacks {
@PrimaryGeneratedColumn()
id: number;
@OneToMany(type => ProductCoupons, productCoupon => productCoupon.product_pack,{ onDelete: "CASCADE" })
product_coupons: ProductCoupons[];
}
export class ProductCoupons {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(type => ProductPacks, productPack => productPack.product_coupons, { onDelete: "CASCADE", nullable: false })
product_pack: ProductPacks;
}
答案 0 :(得分:1)
您需要一个带有外键的关系ID列到ProductPacks表。
将列product_pack_id
添加到实体ProductCoupons
export class ProductCoupons {
@PrimaryGeneratedColumn()
id: number;
@Column()
@RelationId()
product_pack_id: number;
@ManyToOne(type => ProductPacks, productPack => productPack.product_coupons, { onDelete: "CASCADE", nullable: false })
product_pack: ProductPacks;
}
然后将<Some product_pack id>
插入product_pack_id
列
repos.productCouponsRepository
.createQueryBuilder()
.insert()
.values([{ coupon_code: code, product_pack_id: <Some product_pack id> }])
.execute();