单表继承的动态映射

问题描述 投票:0回答:0

我有旧数据库,我尝试将其迁移到 Doctrine ORM 中。

我们的数据库如下所示:

product_tbl
id 名字 类型_id
产品-1 姓名 1010
产品-2 姓名2 1010
特殊情况-1 促销产品 1020
type_tbl
id 类名
1010 产品
1020 特殊产品
class Product extends Entity {
    private string $id;
    private string $name;
    private int $type_id;
}

class SpecialProduct extends Product {
}

因此,正如您所看到的,我们有

type_id
,它是动态的,并且取自不同的表。

似乎我可以将其翻译为 Doctrine Single Table Inheritance,但为此我需要手动编写所有案例:

#[Entity]
#[InheritanceType('SINGLE_TABLE')]
#[DiscriminatorColumn(name: 'type_id', type: 'int')]
#[DiscriminatorMap([1010 => Product::class, 1020 => SpecialProduct::class])]
class Product {
    // ..entity information..
}

如何使此映射动态化(在构建或类似情况下)并将其余映射保留为 PHP 属性?

php symfony doctrine
© www.soinside.com 2019 - 2024. All rights reserved.