Сохранение доктрины 2 пытается вставить существующие элементы вместо их обновления

Я переключаюсь с доктрины 1.2 на 2.x и сталкиваюсь со странной проблемой.

У меня есть объект CompositionRule с атрибутом $ buildingBlock, указывающий на объект BuildingBlock .

Я устанавливаю этот атрибут, указывая на существующий BuildingBlock, который я извлекаю из базы данных.

Когда я сохраняю основной объект (CompositionRule), диспетчер объектов пытается создать новый элемент BuildingBlock и вставить его в базу данных вместо того, чтобы просто признать, что он уже существует, и игнорировать его.

Я не вижу, что мне здесь не хватает, как в доктрине 1.2, когда вы выполнили $ entity-> спасти(); все базовые объекты были правильно обработаны.

Вот некоторые части моих сопоставлений / кода:

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);
}
7
задан geoffreydv 20 June 2011 в 13:01
поделиться