у меня 3 стола
- блок
- организация расширяет подразделение
- секция удлиняет единицу
Теперь я хочу использовать наследование таблиц классов для этого с доктриной. Но столбцы соединения не называются одинаково. Столбец id в таблице юнитов - это uni_id, в организации - org_id, а в разделе - sec_id.
Я пытался решить эту проблему с помощью переопределения ассоциации и переопределения атрибута, как описано в https://www.doctrine -project.org / projects / doctrine-orm / en / latest / reference / наследование-mapping.html
Кажется, что переопределение атрибута переименовывает оба идентификатора родителя в дочерний, это не то, что я хотел. Поэтому я думаю, что мне следует применить отмену ассоциации, но она не работает.
/**
*
* @ORM\Entity
* @ORM\Table(name="unit")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="uni_type_cd", type="string")
* @ORM\DiscriminatorMap({"organisation" = "Organisation", "section" = "Section"})
*/
abstract class Unit {
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(name="uni_id")
* @var int
*/
protected $id;
/**
*
* @ORM\Entity
* @ORM\Table(name="organisation")
*/
class Organisation extends Unit {
}
Я также пытался добавить это в организацию:
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(name="org_id")
* @var int
*/
protected $id;
А я пытаюсь использовать AssociationOverride
/**
*
* @ORM\Entity
* @ORM\Table(name="organisation")
* @ORM\AssociationOverrides({
* @ORM\AssociationOverride(name="id",
* joinColumns=@ORM\JoinColumn(
* name="org_id", referencedColumnName="uni_id"
* )
* )
* })
*
*/
class Organisation extends Unit {
В этом последнем фрагменте кода я использовал все виды @ORM \ AssociationOverride (name =
Как и id, Id, uni_id, но я продолжаю получать ошибки, такие как: MappingException: недопустимое переопределение поля с именем 'id' для класса Organization.
Я ожидаю, что смогу получить необходимую Организацию или Секцию из Репозитория. И пусть эти таблицы присоединяются к расширенной таблице.