我需要在Symfony Entities中创建此数据库模式:
ClassA: - id - name - ...仅适用于类A的其他属性
ClassB: - id - name - ...仅适用于类B的其他属性
ClassC: - id - name - ...仅适用于类C的其他属性
Course: - id - name - type - class_id - class_type [A, B, C] - ...
我需要使用class_id将Course Entity与其他实体(ClassA、ClassB、ClassC)建立关系,使用id和class_type(A、B、C)进行映射。
Course不是一个类,类也不是课程。这里没有继承。在我的项目中,我使用这个概念(id和type映射不同的实体)。因此,我需要解决这个问题,并且像这个简单的例子一样。
我考虑在这里使用@ORM\DiscriminationMap:
ClassA: - id - name - ...仅适用于类A的其他属性
ClassB: - id - name - ...仅适用于类B的其他属性
ClassC: - id - name - ...仅适用于类C的其他属性
Course: - id - name - type - class_id - class_type [A, B, C] - ...
我需要使用class_id将Course Entity与其他实体(ClassA、ClassB、ClassC)建立关系,使用id和class_type(A、B、C)进行映射。
Course不是一个类,类也不是课程。这里没有继承。在我的项目中,我使用这个概念(id和type映射不同的实体)。因此,我需要解决这个问题,并且像这个简单的例子一样。
我考虑在这里使用@ORM\DiscriminationMap:
/**
* Course
*
* @ORM\Table(name="Course")
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="course_type", type="string")
* @ORM\DiscriminatorMap({"A" = "ClassA", "B" = "ClassB", "C" = "ClassC"})
*/
abstract class Course
{
//...
}
class ClassA extends Course
{
//...
}
class ClassB extends Course
{
//...
}
class ClassC extends Course
{
//...
}
或者类似这样的东西。
但我不想在ClassA、ClassB、ClassC实体中复制Course的属性,因为“extends”会将父实体的属性复制到子实体。
这不是关于继承的问题。我需要保持上述描述的数据库方案,而不添加其他实体的任何附加属性。
谢谢
Class(A|B|C)
和Course
之间的关系?这是两个不同的数据库表,对吗? - Petro Popelyshko