在CakePHP中更新多个HABTM关系

时间:2011-01-27 23:47:31

标签: php cakephp has-and-belongs-to-many

在Cake cookbook中,所有示例似乎都使用save() / saveAll()一次更新单个记录的HABTM关系。但是,我想使用一次调用创建多对多的关联。例如,我有3场音乐会活动,我有2个传单。我希望这两个传单与每个音乐会活动相关联。

我有2个表,eventsflyers和一个联接表:events_flyers。所以我想我可以手动将记录添加到连接表中。但我想知道是否有某种方式可以做类似的事情:

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

updateAll()仅适用于常规字段吗?

1 个答案:

答案 0 :(得分:1)

此答案不使用updateAll,但我知道您可以使用save创建HABTM关联,并在$this->data中使用特别键控的数据:

// 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);

这对你有用吗?