Zmieniam doktrynę z wersji 1.2 na 2.x i mam dziwny problem.doctrine 2 persist próbuje wstawić istniejące elementy zamiast ich aktualizacji
Mam podmiot CompositionRule który ma atrybut $ buildingBlock, wskazując na BuildingBlock podmiotu.
Ustawiam ten atrybut, wskazując na istniejący BuildingBlock, który pobieram z bazy danych.
Kiedy utrzymuję główny obiekt (CompositionRule), osoba upoważniona próbuje utworzyć nowy obiekt BuildingBlock i wstawić go do bazy danych, nie akceptując faktu, że już istnieje i ignorując go.
Nie widzę, czego tu brakuje, tak jak w doktrynie 1.2, gdy wykonano $ entity-> save(); wszystkie podstawowe obiekty zostały poprawnie obsłużone.
Oto niektóre części mojego odwzorowań/code:
CompositionRule:
<many-to-one field="buildingBlock" target-entity="BuildingBlock">
<cascade><cascade-all /></cascade>
</many-to-one>
..
public function setBuildingBlock($buildingBlock) {
$buildingBlock->addCompositionRule($this);
$this->buildingBlock = $buildingBlock;
}
BuildingBlock
<one-to-many field="compositionRules" target-entity="CompositionRule" mapped-by="buildingBlock">
<cascade>
<cascade-all />
</cascade>
</one-to-many>
public function addCompositionRule($rule) {
$this->compositionRules->add($rule);
}
Masz ten sam problem tutaj. Czy znalazłeś jakieś rozwiązanie? – Bono
To samo tutaj. +1. Moje tymczasowe obejście polega na iterowaniu $ em-> getUnitOfWork() -> getScheduledEntityInsertions() i usuwaniu konkretnych obiektów ... – tiriana