2011-01-27 152 views
-3

在Cake Cookbook中,所有示例似乎都使用save()/saveAll()一次更新單個記錄的HABTM關係。不過,我想通過一次調用創建多對多關聯。例如,我有3個音樂會活動,我有2個傳單。我希望這兩個傳單與每個音樂會活動相關聯。在CakePHP中更新多個HABTM關係

我有2個表,events,flyers和一個連接表:events_flyers。所以我想我可以手動將記錄添加到連接表。但我不知道是否有一些方法我可以做類似的東西:

$this->Event->updateAll(
    $flyers, 
    array('festival_id' => $id) 
) 

抑或updateAll()只在常規領域工作?

回答

1

這個答案不使用updateAll,但我知道,你可以在$this->data創建使用save HABTM協會和專門鍵控數據:

// load an Event 
$this->data = $this->Event->read(null, $eventId); 

// associate the Event with two Flyers 
$this->data['Flyer']['Flyer'] = array($flyerId1, $flyerId2); 

// save the Event (and HABTM associations) 
$this->Event->save($this->data); 

所以用這個,你能不能把它更進一步,使用saveAll以及多個事件記錄?例如:

$this->data = $this->Event->find('all', array('conditions' => array('Event.id' => $eventIdList))); 

foreach ($this->data as $event) { 
    $event['Flyer']['Flyer'] = array($flyerId1, $flyerId2); 
} 

$this->Event->saveAll($this->data); 

這是否適合您?