Embed Form和EntityType multiple

时间:2015-12-31 14:59:21

标签: symfony

我嵌入了表单,在嵌入表单中有一个带有多个=>的EntityType。真正。 当我保存到数据库时,我得到这个:Doctrine \ Common \ Collections \ ArrayCollection @ 000000 ...

当我将EntityType更改为CHoiceType时带有多个=>真的一切似乎都是正确的。

/**
 * Set emotions
 *
 * @param simple_array $emotions
 *
 * @return Movies
 */
public function setEmotions($emotions) {
$this->emotions = $emotions;

return $this;
}

FormType

->add('emotions', EntityType::class, array(
'class' => 'MovieBundle:Emotions',
'multiple' => true, 
'choice_label' => 'emotion',
))

我不知道问题出在哪里。它是嵌入式的东西,还是我需要数据转换器?

1 个答案:

答案 0 :(得分:1)

当你将多个设置为真的symfony时,将你的属性值设置为一个数组,如果你将多个设置为false,那么这个属性将被设置为它,因此它们之间的区别是:

  • multiple:true要在你的类中调用一个setter,这个setter应该有一个像setEmotions(ArrayCollection $emotions)这样的数组参数,并且它将使用循环逐个持久化。
  • multiple:false要在你的班级中使用类似Emotion的类型的参数调用一个setter,如setEmotions(Emotion $emotion),它将只保留从getEmotions()获得的对象,在这种情况下,他只会保留DoctrineArrayCollection不是包含在其中的对象,这是您的异常的原因