Suppose I got the following Entities

A => one-to-many => B
B => many-to-one => C

Then let's

   1. load an instance of A: $a
   2. given $a, iterate over the collection of B's:
   3. pick a specific B: $b. For that specific B:
   4. given $b, change the instance of C ($c1), with another, already 
   existing / managed instance of C ($c2)
   

After flushing, I would expect that the join- column of the table for 
Entity B referring to Entity C  would be updated from $c1.id to $c2.id

But instead:

   - when invoking $entityManager->flush();  the value of the column 
   in'b.c_id' does not change (seems the change is not detected)
   - when invoking $entityManager->flush($b); the value of the column 
   in'b.c_id' does change (the change is detected)
   
And as experiment:

   - when invoking $entityManager->flush($a); the value of the column 
   in'b.c_id' does not change (the change is not detected)
   
I thought that $entityManager->flush() would check its internal Identity 
Map for all 'dirty' / changes objects and flush them. But it appears the 
change to Entity B as part of the collection in Entity A is not detected. 

Has that behavior changed recently, or is my assumption incorrect, can't 
remember I ever needed to explicitly invoke flush on a specific kind of 
Entity...

Cheers, 

Menno

PS, the reason I am asking is because we are using DCI 
<http://en.wikipedia.org/wiki/Data,_context_and_interaction> inspired 
UseCases that should only return a boolean. After a successfull execution 
of a UseCase the controller invokes $entityManager->flush(). Now I have to 
do $entityManager->flush($b); inside the UseCase (we should not return the 
$b to the controller), while the UseCase is purely functional and should 
not care about such details.

-- 
You received this message because you are subscribed to the Google Groups 
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to