2 回答
TA贡献1842条经验 获得超21个赞
为什么不让你的基础实体产品变得抽象呢?那么你所有的其他产品都可以扩展它吗?
抽象的:
/**
* @ORM\Entity(repositoryClass=ProductRepository::class)
*/
abstract class Product
{
产品1:
/**
* @ORM\Entity(repositoryClass=Product1Repository::class)
*/
class Product1 extends Product
{
TA贡献1851条经验 获得超5个赞
您可以从 Doctrine 文档中检查类表继承。
基本上,您使用子实体共有的所有字段创建基本实体,然后创建一个鉴别器列并映射该列可以具有的值,这些值将映射到您的子实体。
<?php
namespace MyProject\Model;
/**
* @Entity
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
*/
class Person
{
// ...
}
/** @Entity */
class Employee extends Person
{
// ...
}
通过这种方式,您将拥有一个 Person 表,其中包含名为“discr”的列以及您声明的所有其他字段;和一个名为 Employee 的表,其中 Person.id 作为主键,Person 的外键,加上您在“Employee”实体中声明的所有字段。
- 2 回答
- 0 关注
- 92 浏览
添加回答
举报