2016-05-26 6 views
1

を私は教義でこれを行う:Doctrineは削除 - 更新マージ問題

$ds = new Entity(); 
$ds->setId(4); 
$ds->setField('Foo'); 
$em->merge($ds); 
$em->flush(); 

とDoctrineは、アップデートを実行します。

$e = $em->find(1); 
$r = $e->getRelatedCollection()->get(0); 
$e->getRelatedCollection()->remove(0); 
$e->getRelatedCollection()->remove(1); 

$a = new TypeRelated(); 
$a->setId($r->getId()); 
$a->setField("bar"); 
$e->getRelatedCollection()->set(0, $a); 
$a->setInverse($e); 
$em->merge($e); 
$em->flush(); 

をとDoctrineは2件の削除を実行しますが、何のアップデートは実行されません:

しかし、私はこれを行います。どうして?

Doctrineが分離フィールドにIDを持っていても、新しいフィールドを挿入しようとしました。

$ e OneToMany関係でorphanRemoval = trueを使用していることに注目してください。

同じフラッシュで削除と更新を行うにはどうすればよいですか?

私の問題は、PUT操作で、同じ操作で関連フィールドを追加、削除、変更したいということです。どうやってやるの? 多くのケースを試しましたが、解決できません。

答えて

-1

マージの永続化を試みることができます

$ em-> persist($ e);