It is possible to store an array instead of a mapped association. In Symfony2, this is fairly easy using the collection Field Type. For example, usi
You can find the answer here:
How to force Doctrine to update array type fields?
Refs:
Doctrine uses identical operator
===
to compare changes between old and new values. The operator used on the same object with different data always return true. There is the other way to solve this issue, you can clone an object that needs to be changed.$items = $myEntityObject->getItems(); $items[0] = clone $items[0]; $items[0]->setSomething(123); $myEntityObject->setItems($items);
Or change the setItems() method
public function setItems($items) { if (!empty($items) && $items === $this->items) { reset($items); $key = key($items); $items[$key] = clone $items[$key]; } $this->items = $items; }
You can try this inside the controller:
public function updateTeamAction($team_id, Request $request)
{
$em = $this->getDoctrine()->getManager();
$repository= $em->getRepository('AcmeTestBundle:Team');
$team_to_update = $repository->find($team_id);
$form = $this->createForm(new teamType(), $team_to_update);
if ($request->getMethod() == 'POST')
{
$form->bind($request);
if ($form->isValid()){
$events = $team_to_update->getEvents();
foreach($events as $key => $value){
$team_to_update->removeEvent($key);
}
$em->flush();
$team_to_update->setEvents($events);
$em->persist($team_to_update);
$em->flush();
return $this->redirect($this->generateUrl('homepage')) ;
}
}
return array(
'form' => $form->createView(),
'team_id' => $team_id,
);
}
There is probably a beter way to do this and i know this isnt a nice way to do it but till you (or someone else) finds that solution you can use this as a temporary fix.