Я хочу создать описание этой таблицы в symfony:
GeneralAssignment:
- id (int)
- имя (текст)
- курс (курс)
- тип (1 | 2)
- присваивание (Назначение1, если тип == 1 | Назначение2, если тип == 2)
Курс:
Assignment1:
- id (int)
- general_assignment (GeneralAssignment)
Assignment2:
- id (int)
- general_assignment (GeneralAssignment)
Итак, лучшее решение - использовать эту схему отношений:
[Простое отношение ManyToOne] (курс): Course.id <------> GeneralAssignment.course (GeneralAssignment)
И
[ОБЪЕДИНЕННЫЙ тип наследования] (GeneralAssignment): GeneralAssignment.type [1 = Назначение1 | 2 = Назначение2]
Итак, я получу модель этого класса (извините за это плохое фото):
Проблема
Я использовал для создания этой модели, потому что сначала хочу создать курс, затем создать общее назначение с использованием идентификатора курса и, наконец, создать конкретное назначение с использованием идентификатора общего назначения
Проблема в том, что я не могу создать отношение доктрины отношений между Assignment1 и GeneralAssignment с помощью Assignment1.general_assignment: «Не удается создать экземпляр абстрактного класса AssignmentGeneral». (то же самое между Assignment2 и AssignmentGeneral).
Мне нужен атрибут Assignment1.assignment_general, потому что я собираюсь использовать классы Assignment1 и Assignment2 позже, и если я не могу знать идентификатор general_assignment, я даже не могу знать общую информацию о назначении из-за наследования от AssignmentGeneral для определенные классы Назначения (Назначение1, Назначение2)
AssignmentGeneral является абстрактным классом, поскольку DiscriminatorMap требует, чтобы класс был абстрактным.
Так что мне делать?
Я не могу установить AssignmentGeneral из "abstract class" в "class" и не могу создать связь между Assignment1 (или Assignment2) и GeneralAssignment в Assignment1
PS: Эти имена классов не настоящие, но они похожи на мою настоящую проблему. Просто, чтобы разобраться, я раскрыл эту простую проблему.
Большое спасибо за каждый ответ
С наилучшими пожеланиями
[Изменить]
Я добавляю Генеральную декларацию Назначения
/**
*
* @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
{
//...
}