我有旧数据库,我尝试将其迁移到 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 属性?