2016-12-02 57 views
1

我試圖保存用戶和類別之間的ManyToMany關係。其實我試圖用給定的用戶來保存我的類別,但這不起作用。Symfony3 ::處理ManyToMany關係

形式

$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' 
     )); 

表單處理程序

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

什麼不行?你沒有顯示你的所有代碼! –

+0

@AlvinBunk我編輯了我的文章 –

回答

1

也許你必須先反序列化實體類$?

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

我發現關於這個鏈接: How to manage deserialized entities with entity manager?

不知道如果是這樣的答案,但你可能希望做更多的研究。

+0

感謝您的快速回答。 這沒有幫助,我的$ category變量沒有被序列化: 「警告:unserialize()期望參數1是字符串,對象給出」 –

+0

如果使用'$ this-> em-> persist($ category) ;而不是?或者你必須使用合併? –

+0

反序列化確實會拋出此異常,因爲我的$ category變量是實體的一個實例,而不是序列化的字符串。 –