2011-11-13 58 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(); 
    } 
    // ... 
    } 
相關問題