У меня есть два контроллера, один, которые регистрируют измененные объекты и поместить их в сессии:сохраняются и встраивание объектов из сеанса
public function update_accountAction(Request $request)
{
Try
{
$code = $request->request->get('code');
$name = $request->request->get('name');
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository('NRtworksChartOfAccountsBundle:Accounttree');
$to_change = new Accounttree();
$to_change = $repo->findOneByCode($code);
$to_change->setName($name);
$to_change->setCode($code);
$session = $this->getRequest()->getSession();
$entity_to_update = $session->get('entity_to_update');
$counter = $session->get('number_of_changes');
$entity_to_update[] = $to_change;
$counter = $counter +1;
$session->set('number_of_changes',$counter);
$session->set('entity_to_update',serialize($entity_to_update));
$response = array("code" => 100, "success" => true, "modified" => $entity_to_update);
return new Response(json_encode($response));
}
Catch(Exception $e)
{
$response = array("code" => 100, "success" => false, "error" => $e);
return new Response($response);
}
}
И еще одно, что петли на результатах, и если это на самом деле один из желаемый объект сохраняется. Наконец я промолчал.
public function save_changesAction()
{
Try
{
$em = $this->getDoctrine()->getManager();
$session = $this->getRequest()->getSession();
$entity_to_update = unserialize($session->get('entity_to_update'));
foreach($entity_to_update as $account)
{
if($account->getId())
{
$em->persist($account);
echo $account->getId();
}
else
{
echo "error";
}
}
$em->flush();
$response = array("code" => 100, "success" => true, "modified" => $account->getId());
return new Response(json_encode($response));
}
Catch(Exception $e)
{
$response = array("code" => 100, "success" => false, "error" => $e);
return new Response($response);
}
}
Так что результат этого: ContextErrorException: Примечание: Undefined индекс: 000000007a60b041000000007ae6afd8 в /home/eagle1/www/Symfony24/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php линии 2852
Я не понимаю, почему, потому что кажется, что я получаю обратно полностью функциональный объект (я могу выполнять свои функции, доступ к его собственности и, кажется также, что упорствовать работает ...
Кто-нибудь знает ответ
Что находится в строке 2852? – loveNoHate
Есть ли конкретная причина, по которой вы не просто сохраняете идентификатор объекта вместе с двумя строками (имя и код) в сеансе ... вместо этого вы пытаетесь сохранить полный объект (со всеми материалами прокси-доктрины)? вы можете легко просто извлечь объекты из хранилища в свое действие save-action. – nifr
Вы правы для этого случая, я мог бы сделать, как вы говорите. Однако, когда я захочу изменить родителя, мне придется иметь сущность. Если я не могу установить родителя самостоятельно (не используя метод addchild, рекомендованный в документе) – Eagle1