У меня есть много-много самореферентных равноценных отношений для одной из моих таблиц. Таблицы баз данных выглядеть примерно так:Symfony2 Doctrine PHP Аннотация для refClassRelationAlias
Node
- id
Node_Relationship
- parent_id (FK of Node.id)
- child_id (FK of Node.id)
- PRIMARY KEY (parent_id, child_id)
Это вызывает проблемы с доктриной, давая повторяющиеся записи для этого ID комбинации.
Эта тема, http://www.doctrine-project.org/jira/browse/DC-329, упоминает исправление в самом низу с помощью refClassRelationAlias.
Вопрос, как это реализовать? Я использую метод аннотации PHP для разметки своих классов, но они упоминают только использование файла YAML, который я сейчас не делаю.
Могу ли я реализовать это, полностью не переделав все в файл YAML? Если да, то как?
Спасибо.
UPDATE:
Моих два полей аннотированные так:
/**
* @ORM\ManyToMany(targetEntity="Module", inversedBy="children")
* @ORM\JoinTable(name="module_relationships",
* joinColumns={@ORM\JoinColumn(name="child_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="parent_id",
* referencedColumnName="id")}
* )
*/
protected $parents;
/**
* @ORM\ManyToMany(targetEntity="Module", mappedBy="parents")
*/
protected $children;
Когда я что-то добавить к родителю или ребенку, я также установить его обратный. Я использую set и использую идентификатор объекта в качестве ключа, чтобы избежать дублирования в ArrayCollection.
Они исправили ошибку, и я просто делаю что-то неправильно? Или есть еще ошибка с другим исправлением. Я использую Symfony версии 2.0.12.
Спасибо.
UPDATE 2: Оказывается, я создавал дубликаты непреднамеренно. Как только я изменил функцию, чтобы фактически предотвратить их, кажется, что все работает нормально.
Исправление для версии доктрины 1.2. –
Есть ли исправление для последней версии, и я делаю что-то не так? – samanime
Я еще не работал с самостоятельным ссылкой на отношения многих-ко-многим. Но все-таки вы можете рассказать о сценарии, когда возникает проблема с дублированием записи? –