2011-11-13 60 views
0

我必须在我的应用程序中的3个表。 - event,event_categoryevent_category_connection。这是两个第一个表之间的多对多关系。我想要做的是将sfWidgetFormDoctrineChoiceEventForm(它是通过Symfony - doctrine模型自动生成的)类别相加,在保存事件后,我将能够自动添加新事件与现有类别之间的连接。symfony - 自动生成的其他字段模型形式

$this->widgetSchema['event_category_id'] = new sfWidgetFormDoctrineChoice(array(
    'model' => 'EventCategory', 
    'add_empty' => false, 
    'multiple'=>"true", 
    'expanded'=>true)); 
$this->setValidator('event_category_id', new sfValidatorDoctrineChoice(array(
    'model' => 'EventCategory', 
    'required' => false))); 

这是我添加到自动生成EventForm。我的理解是,在创建操作过程中,新对象通过$form->getObject()->save()函数保存。这是我得到错误的地方(未知记录属性/相关组件)。

任何建议如何处理此操作。这是我试图编码:

在一个动作 - >保存对象 - >获取新对象的ID - >保存类别和新对象之间的多对多关系。 Krzycho。

Krzycho。

+0

您可以发布您的架构事件,event_cetegory和event_category_connection? – denys281

回答

0

首先,你必须做一个$form->save(),然后保存您的关系(这是一种方法,大概有很多方法可以到达那里):

protected function processForm(sfWebRequest $request, sfForm $form) 
    { 
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName())); 
    if ($form->isValid()) 
    {  
     $obj = $form->save(); 

     $this->saveRelations($request, $obj); 
     // save the event_category objects in an array: $event_categories 
     // $obj->EventCategory = $event_categories; 
     // $obj->save(); 
    } 
    // ... 
    } 
相关问题