Doctrineのバージョン2.1教義2.1 - エンティティiは多数のオブジェクトを永続化しています
を持続することができない、私は$this->entityManager->flush()
後$this->entityManager->clear()
をしなければならない理由がある、しかし、それはよく知られてエラーが発生します。
Exception: "A new entity was found through the relationship 'Entities\A#B' that was not configured to cascade persist operations for entity: Entities\[email protected] Explicitly persist the new entity or configure cascading persist operations on the relationship. If you cannot find out which entity causes the problem implement 'Entities\B#__toString()' to get a clue."
最初のフラッシュには機能しますが、それ以外のフラッシュメモリでは機能しません。私はここで$this->entityManager->clear();
は、コードサンプルでコメントする場合:
if ($flushCounter % 50 == 0) {
$this->entityManager->flush();
$this->entityManager->clear();
//$this->entityManager->detach($B); <- with these two lines commented I tried to fix the error, but it did not work
//$B = $this->entityManager->find(ENTITY_NAMESPACE . "\B", (int) $B_id);
}
$flushCounter++;
私は明確に()関数をコメントアウトしても問題が修正されますが、管理するためのより良い方法がない限り、私はそれを行うにはしたくないことを繰り返すことになりますメモリ
アソシエーション内のエンティティは変更されているようですが、アソシエーションの逆の側にあります。したがって、所有サイドを永続化しようとすると、 'CASCADE:persist'セットがないので、エラーをスローします。 –