doctrine 1.2から2.xへの切り替えを行っていて、奇妙な問題に遭遇しています。doctrine 2 persistは、更新する代わりに既存のアイテムを挿入しようとします
は私がBuildingBlock実体を指し、属性$ buildingBlockを持っているエンティティCompositionRuleを持っています。
私はこの属性を設定して、データベースからフェッチする既存のBuildingBlockを指しています。
メインオブジェクト(CompositionRule)を永続化すると、entitymanagerは新しいBuildingBlockアイテムを作成し、それが既に存在することを受け入れて無視するのではなく、データベースに挿入しようとします。
$ entity-> save();を実行したときにdoctrine 1.2のように私がここで紛失していることはありません。すべての基礎となるオブジェクトが正しく処理されました。ここで
が私のマッピング/コードの一部は次のとおりです。
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);
}
ここで同じ問題があります。あなたは解決策を見つけましたか? – Bono
同じです。 +1。私の一時的な回避策は、$ em-> getUnitOfWork() - > getScheduledEntityInsertions()を繰り返し、特定のエンティティを削除することです。 – tiriana