2015-06-05 5 views
8

Wenn ich Symfony2 Form vorlege ich folgende Fehlermeldung bekam:Symfony 2 - Entity hat werden zur Entfernung verwaltet oder geplant für einzelne Berechnung

Entity has to be managed or scheduled for removal for single computation

Was bedeutet dieser Fehler bedeuten?

Ich benutze das Formular, das zum Hinzufügen neuer Artikel zu DB zielt. Ich habe mehrere ManyToOne Beziehungen in der Form.

/** 
    * This code is aimed at checking if the book is choseen and therefore whether any further works may be carried out 
    */ 
    $session = new Session(); 
    if(!$session->get("App_Books_Chosen_Lp")) return new RedirectResponse($this->generateUrl('app_listbooks')); 

    $request = $this->get('request'); 
    $em = $this->getDoctrine()->getManager(); 
    if($item_id != null) 
    { 
     /* THIS CODE IS NOT EXECUTED IN THE GIVEN CASE */ 
    } 
    else 
    { 
     // Add 
     $item = new Items(); 
     $form = $this->createForm(new ItemsType(), $item); 
     $form->add('save', 'submit', array('label' => 'Add item')); 
    } 
    $form->remove('documentid'); 
    $form->remove('book'); 
    $form->handleRequest($request); 
    if ($form->isValid()) { 

     if($item_id != null) 
     { 
      /* THIS CODE IS NOT EXECUTED IN THE GIVEN CASE */ 
     } 
     else 
     { 
/* HERE ERROR OCCURS */ 
      // Add 

      $book = $em->getReference('AppBundle:Books', $session->get("App_Books_Chosen_Lp")); 
      if($book) $item->setBook($book); 
      $doc = $em->getReference('AppBundle:Documents', $doc_id); 
      if($doc) $item->setDocumentid($doc); 
      $em->flush($item); 
      $session = new session(); 
      $session->getFlashBag()->add('msg', 'Item was added.'); 
      $url = $this->generateUrl("app_documents_details", array("id" => $doc_id)); 
      return $this->redirect($url); 
     } 
+0

Vielen Dank für die Reduzierung Ihres Codes auf die in Frage stehenden Zweige! – Barett

Antwort

17

Sie müssen Ihre Entity beibehalten, damit der EntityManager weiß, dass sie existiert.

$em->persist($item); 
$em->flush($item); 
Verwandte Themen