我想在symfony中创建这个表格描述:
GeneralAssignment:
课程:
分配1:
Assignment2:
所以最好的解决方案是使用这种关系模式:
[简单关系ManyToOne](课程):Course.id< ------> GeneralAssignment.course(GeneralAssignment)
和
[JOINED Ineritence type](GeneralAssignment):GeneralAssignment.type [1 = Assignment1 | 2 = Assignment2]
所以我会得到这个班级模型(抱歉这张糟糕的照片):
问题
我曾经创建过这个模型,因为我想首先创建课程,然后使用课程ID创建GeneralAssignment,最后使用常规作业的id创建特定作业
问题是,我无法使用Assignment1.general_assignment在Assignment1和GeneralAssignment之间创建关系学说关系:“无法实例化抽象类AssignmentGeneral”。 (Assignment2和AssignmentGeneral之间的情况相同)。
我需要Assignment1.assignment_general属性,因为我稍后会使用Assignment1和Assignment2类,如果我不知道general_assignment id,我甚至不知道赋值一般信息,因为从AssignmentGeneral继承到特定的分配类(Assignment1,Assignment2)
AssignmentGeneral是一个抽象类,因为DiscriminatorMap要求该类应该是抽象的。
那我该怎么办?
我无法将AssignmentGeneral从“abstract class”设置为“class”,我无法在Assignment1中的Assignment1(或Assignment2)和GeneralAssignment之间创建关系
PS:这些类名不是真正的类,但它们与我的真实问题类似。为了简单起见,我揭露了这个简单的问题。非常感谢您的每一个答案
祝你好运
[编辑] 我正在添加AssignmentGeneral声明
/**
*
* @ORM\Table(name="assignment_general")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="integer")
* @ORM\MappedSuperclass
* @ORM\DiscriminatorMap({
1 = "Assignment1",
* 2 = "Assignment2"
* })
*/
abstract class StatisticsGeneralAbstract
{
//...
}
还有:
/**
*
* @ORM\Table(name="assignment1")
*
*/
class Assignment1 extends AssignmentGeneral
{
//...
}
/**
*
* @ORM\Table(name="assignment2")
*
*/
class Assignment2 extends AssignmentGeneral
{
//...
}
答案 0 :(得分:1)
Class table inheritance ('JOINED')并不要求父类是抽象的。
此外,继承的一个好处是在实例化子类时获取父属性。因此,您不必实例化这两者,只需实例化Assignment1
或Assignment2
。
在“课程”实体和assignmentType
属性中为它们添加关系,以便您知道它与哪个属性相关联。