2016-12-02 7 views
1

Ich versuche, meine ManyToMany Beziehungen zwischen Benutzern und Kategorien zu speichern. Eigentlich versuche ich meine Kategorie mit bestimmten Benutzern zu speichern, aber das funktioniert nicht.Symfony3 :: Handle ManyToMany Beziehungen

Formular

$builder->add('name') 
     ->add('users', EntityType::class, array(
      'label' => 'Benutzer', 
      'class' => 'AppBundle\Entity\User', 
      'multiple' => true, 
      'expanded' => true, 
      'required' => false, 
      'choice_label' => function (User $user) { 
       return $user->getUsername(); 
      } 
     )) 
     ->add('submit', SubmitType::class, array(
      'label' => 'Speichern' 
     )); 

Form Handler

public function onSuccess(Request $request) 
{ 
    // Get category from form 
    $category = $this->getForm()->getData(); 

    // Redirect to parent category when setted 
    if ($this->parent) { 
     $category->setParent($this->parent); 
     $response = new RedirectResponse($this->router->generate('categories.view', [ 
      'category' => $this->parent->getId() 
     ])); 
    } else { 
     // Build new redirect response 
     $response = new RedirectResponse($this->router->generate('categories.view', [ 
      'category' => $category->getId() 
     ])); 
    } 

    try { 
     // Save category in database 
     $this->em->merge($category); 
     $this->em->flush(); 
    } catch (ORMException $ex) { 
     throw $ex; 
    } 

    return $response; 
} 
+0

Was funktioniert nicht? Sie haben nicht Ihren gesamten Code angezeigt! –

+0

@AlvinBunk Ich habe meinen Beitrag bearbeitet –

Antwort

1

Vielleicht haben Sie zuerst die Entity $ Kategorie unserialize?

$detachedCategory = unserialize($category); 
$this->em->merge($detachedCategory); 
$this->em->flush(); 

fand ich diesen Link, dass in Bezug auf: How to manage deserialized entities with entity manager?

Nicht sicher, ob das die Antwort ist, aber Sie könnten mehr Forschung tun wollen.

+0

Vielen Dank für Ihre schnelle Antwort. Das hilft nicht, meine $ Kategorie Variable ist nicht serialisiert: "Warnung: unserialize() erwartet Parameter 1 als String, Objekt gegeben" –

+0

Was ist, wenn Sie '$ this-> em-> persist ($ Kategorie) verwenden ; 'stattdessen? Oder müssen Sie die Zusammenführung verwenden? –

+0

unserialize wirft diese Ausnahme, weil meine $ category-Variable eine Instanz von Entity ist, keine serialisierte Zeichenfolge. –