2017-05-05 85 views
0

經過多次不成功的嘗試,我來找你們的朋友。代symfony形式

實體user.php的

/** 
* User 
* 
* @ORM\Table(name="user") 
* @ORM\Entity(repositoryClass="AA\UserBundle\Repository\UserRepository") 
*/ 
class User extends BaseUser 
{ 
/** 
* @var int 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\ManyToMany(targetEntity="AA\TestBundle\Entity\Themes", cascade={"persist"}) 
* @ORM\JoinTable(name="users_themes") 
*/ 
protected $themes; 

實體Themes.php

/** 
* @ORM\Entity 
*/ 
class Themes 
{ 
/** 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\Column(name="name", type="string", length=255) 
*/ 
private $name; 

我的表的主題包含不同的主題,如 「運動」, 「烹飪」 等的標識和名稱字段...

我有兩個user_id和themes_id字段的「user_themes」主題和用戶之間的關係表。

所以我想顯示的形式給我的用戶的主題,我用的EntityType繼續現在:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
    ->add('themes', EntityType::class, array(
    'class'  => 'AAUserBundle:User', 
    'choice_label' => 'themes', 
    'multiple'  => true, 
)) 
    ->add('save',  SubmitType::class, array(
    'label' => 'test !' 
    )); 
} 

我有以下錯誤:

Catchable Fatal Error: Object of class Doctrine\ORM\PersistentCollection could not be converted to string 

我明白錯誤,大主題是一個數組,所以它不能顯示它。具體來說,我想要的是使一個themes.name檢索用戶的主題名稱列表。

我真的不知道採用什麼方法。

謝謝你的幫助。

這個。

+0

您是否使用過'public function __toString()'? –

+0

是的我試過這個,但symfony返回相同的錯誤可捕獲的致命錯誤:類Doctrine \ ORM \ PersistentCollection的對象不能轉換爲字符串 –

+0

和什麼樣的數據是PersistentCollection? –

回答

0

AAUserBundle:User實體,應該實現一個__toString()功能

否則,symfony的不知道在選擇使用哪種AAUserBundle:User屬性,顯示

另外,設置你的formfield的choice_namechoice_value選項

+0

感謝您的回覆。 我看不出如何實現toString()方法及利息 主題是一個數組,是有可能使 「選擇」 =>的foreach($主題爲$ THEMENAME){ ... } –

+0

對不起,我在路atm,但我只是注意到,你有你的用戶輸入,在'類'選項下,這應該是你的主題類,而不是 –

+0

我不明白,我只想保持用戶主題,不是所有的主題 –

0

試試這個。這是你如何在你的實體中實現_toString()函數。

public function __toString() 
{ 
    return $this->getthemes(); 
} 
+0

我已經實現了這個方法,symfony返回同樣的錯誤。 可捕獲的致命錯誤:類Doctrine \ ORM \ PersistentCollection的對象無法轉換爲字符串 –