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 關注
- 129 瀏覽
添加回答
舉報