Forms 在表单中手动保存多对多

Forms 在表单中手动保存多对多,forms,symfony1,doctrine,save,Forms,Symfony1,Doctrine,Save,我有一个模型,有3个表,多到1到多,如下所示 (缩写schema.yml) 将这些内容保存在自动生成的表单中是可以的。然而,在一个特殊情况下,我需要从PeerEngagementForm中分别保存nhi和种族 为了拯救nhi,我有以下工作: function doSave($con=null){ ... if(isset($this->values['nhi'])){ $this->getObject()->getPeer()->setNhi($thi

我有一个模型,有3个表,多到1到多,如下所示

(缩写schema.yml)

将这些内容保存在自动生成的表单中是可以的。然而,在一个特殊情况下,我需要从PeerEngagementForm中分别保存nhi和种族

为了拯救nhi,我有以下工作:

function doSave($con=null){

  ...

  if(isset($this->values['nhi'])){
    $this->getObject()->getPeer()->setNhi($this->values['nhi']);
    $this->getObject()->getPeer()->save();
  }

  ...
但同样的技术不适用于

if(isset($this->values['ethnicity_list'])){

   $this->getObject()->getPeer()->setEthnicity($this->values['ethnicity_list']);
   $this->getObject()->getPeer()->save();
}
我得到的错误消息是,它需要一个集合


如何正确创建此集合,或者如何从顶级表单或操作中保存多对多关系?

您是否尝试将$this->values['ocidentity_list']放入集合中

if(isset($this->values['ethnicity_list'])){


$ethnicityLists = new Doctrine_Collection('Ethnicity');
foreach($this->values['ethnicity_list'] as $ethnicityList){
  $ethnicityLists->add($ethnicityList);
}
$peer = $this->getObject()->getPeer();
$peer->setEthnicity($ethnicityLists);
$peer->save();

}

应该有用,我也这么想。

你有没有试过把$this->values['ocidentity\u list']放在一个集合中

if(isset($this->values['ethnicity_list'])){


$ethnicityLists = new Doctrine_Collection('Ethnicity');
foreach($this->values['ethnicity_list'] as $ethnicityList){
  $ethnicityLists->add($ethnicityList);
}
$peer = $this->getObject()->getPeer();
$peer->setEthnicity($ethnicityLists);
$peer->save();

}
我想我也应该这样做