У меня есть два следующих объекта Doctrine, в которых TestInheritanceChild расширяет TestInheritanceParent, и они оба являются частью одного наследования таблицы:
/**
* @ORM\Entity()
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="reference_type", type="string")
* @ORM\DiscriminatorMap({
* "disc1" = "TestInheritanceParent",
* "disc2" = "TestInheritanceChild"
* })
*/
class TestInheritanceParent
{
/**
* @var
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(name="id", type="integer")
*/
protected $id;
/**
* @ORM\OneToOne(targetEntity="ReferenceOne")
* @ORM\JoinColumn(name="reference_id", referencedColumnName="reference_one_id")
*/
protected $reference;
}
/**
* @ORM\Entity()
*/
class TestInheritanceChild
extends TestInheritanceParent
{
/**
* @ORM\OneToOne(targetEntity="ReferenceTwo")
* @ORM\JoinColumn(name="reference_id", referencedColumnName="reference_two_id")
*/
protected $reference;
}
Я хочу переопределить однозначную ассоциацию в моем дочернем классе,так что свойство ссылки объекта типа InheritanceTestParent связано с сущностью ReferenceOne, а свойство ссылки объекта типа InheritanceTestChild связано с сущностью ReferenceTwo.Однако, если я взгляну на метаданные, я получу следующее сопоставление ассоциации для ОБА родительской и дочерней сущности:
array:1 [
"reference" => array:19 [
"fieldName" => "reference"
"targetEntity" => "ReferenceOne"
"joinColumns" => array:1 [
0 => array:6 [
"name" => "reference_id"
"unique" => false
"nullable" => true
"onDelete" => null
"columnDefinition" => null
"referencedColumnName" => "reference_one_id"
]
]
"mappedBy" => null
"inversedBy" => null
"cascade" => []
"orphanRemoval" => false
"fetch" => 2
"type" => 1
"isOwningSide" => true
"sourceEntity" => "TestInheritanceParent"
"isCascadeRemove" => false
"isCascadePersist" => false
"isCascadeRefresh" => false
"isCascadeMerge" => false
"isCascadeDetach" => false
"sourceToTargetKeyColumns" => array:1 [
"reference_id" => "reference_one_id"
]
"joinColumnFieldNames" => array:1 [
"reference_id" => "reference_id"
]
"targetToSourceKeyColumns" => array:1 [
"reference_one_id" => "reference_id"
]
]
]
Мой вопрос таков: как можно перезаписать родительскую аннотацию вдочерняя сущность?Я уже пробовал с аннотацией @ORM \ AssociationOverride, которая тоже не работала.
Есть идеи?
В настоящее время я пользуюсь Doctrine 2.6 ...