Я переключаюсь с доктрины 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);
}