我嵌入了表单,在嵌入表单中有一个带有多个=>的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',
))
我不知道问题出在哪里。它是嵌入式的东西,还是我需要数据转换器?
答案 0 :(得分:1)
当你将多个设置为真的symfony时,将你的属性值设置为一个数组,如果你将多个设置为false,那么这个属性将被设置为它,因此它们之间的区别是:
setEmotions(ArrayCollection $emotions)
这样的数组参数,并且它将使用循环逐个持久化。setEmotions(Emotion $emotion)
,它将只保留从getEmotions()
获得的对象,在这种情况下,他只会保留DoctrineArrayCollection不是包含在其中的对象,这是您的异常的原因