2013-03-02 86 views
1

我的實體選擇多=真,創建新條目

/** 
* Set friend 
* 
* @param \Frontend\ChancesBundle\Entity\UserFriends $friend 
* @return ChanceRequest 
*/ 
public function setFriend(\Frontend\ChancesBundle\Entity\UserFriends $friend = null) 
{ 
    $this->friend = $friend; 

    return $this; 
} 

我的行動

$task = new ChanceRequest(); 
$form = $this->createFormBuilder($task) 
      ->add('friend', 'choice', array(
       'required' => true, 
       'expanded' => true, 
       'choices' => $fb_friends, 
       'multiple' => true, 
       'mapped' => true 
      )) 
      ->getForm(); 

因爲setFriend期待一個標量,我無法驗證這或將其保存到數據庫中。這是用戶想要向某人發送消息的朋友的數組。我該如何改變它?

我在這裏看到一個帖子: Symfony2 Choice : Expected argument of type "scalar", "array" given 但這不工作,我把一個數組中的\Frontend$friend.我猜是因爲相關表的前面。

實體如何讓它工作我需要做些什麼?

回答

1

如果您的數據庫中可能找到friends(例如,它是一個用戶實體),則應聲明這兩個表的ManyToMany關係。如果不是,則使friend屬性成爲一個原則數組類型。如果朋友不是一個有效的實體類,那麼你擁有的所有其餘部分就是製作一個自定義驗證器和數據轉換器。否則,你什麼也沒有做。所有這些信息都可以在官方的symfony和doctrine文檔中找到。

How to create a Custom Validation Constraint

How to use Data Transformers

Association Mapping

Working with Associations