@zitSuccess

Как выбрать поле геттер в querybuilder typeorm?

Есть модель продукта, и геттер внутри нее, который считает цену со скидкой. Если делать выборку одного продукта, то вывести цену со скидкой получается, а при попытке вывести несколько продуктов выдает ошибку, что такого столбца нету.

entity:
@Entity()
export class Product {
    @PrimaryGeneratedColumn()
    id: number

    @Column()
    title: string

    @Column()
    description: string

    @Column()
    code: string

    @Column()
    priceUAN: number

    @Column({nullable: true})
    priceUSD: number

    @Column({type: 'int', default: 0})
    sale: number

    @Column()
    availableQuantity: number

    @Column({default: true})
    isAvailable: boolean

    @CreateDateColumn({type: "timestamp", default: () => "CURRENT_TIMESTAMP(6)"})
    createdAd: Date

    @Column()
    photo: string

    @Column({unique: true})
    slug: string

//    properties
    @OneToMany(() => Property, (property) => property.product, {onDelete: "CASCADE"})
    properties: Property[]

//    brand
    @ManyToOne(() => Brand, (brand) => brand.products)
    brand: Relation<Brand>

//    model
    @ManyToOne(() => Model, (model) => model.products)
    model: Relation<Model>

//    category
    @ManyToOne(() => Category, (category) => category.products)
    category: Relation<Category>

//    photos
    @OneToMany(() => ProductPhoto, (photo) => photo.product, {onDelete: "CASCADE"})
    photos: ProductPhoto[]

//    reviews
    @OneToMany(() => Review, (review) => review.product, {onDelete: "CASCADE"})
    reviews: Review[]

//    rating
    @OneToMany(() => Rating, (rating) => rating.product, {onDelete: "CASCADE"})
    rating: Rating[]

//    orders
    @OneToMany(() => OrderItem, (orderItem) => orderItem.product, {onDelete: "SET NULL"})
    orders: OrderItem[]

//    color
    @ManyToOne(() => ProductColor)
    color: Relation<ProductColor>

    get discountPrice(): number {
        return this.sale > 0 ? this.priceUAN - (this.priceUAN / this.sale) : this.priceUAN
    }
}


querybuilder:
const queryBuilder = await this.productRepository.createQueryBuilder('product')
            .leftJoinAndSelect('product.category', 'category')
            .leftJoinAndSelect('product.brand', 'brand')
            .leftJoinAndSelect('product.properties', 'properties')
            .leftJoinAndSelect('product.model', 'model')
            .leftJoinAndSelect('product.color', 'color')
            .addSelect('product.discountPrice', 'discountPrice')
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov
Помог ответ? Отметь решением.
https://wanago.io/2021/11/29/generated-columns-pos...
Похоже на вашу ситуацию
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы