在Cake cookbook中,所有示例似乎都使用save()
/ saveAll()
一次更新单个记录的HABTM关系。但是,我想使用一次调用创建多对多的关联。例如,我有3场音乐会活动,我有2个传单。我希望这两个传单与每个音乐会活动相关联。
我有2个表,events
,flyers
和一个联接表:events_flyers
。所以我想我可以手动将记录添加到连接表中。但我想知道是否有某种方式可以做类似的事情:
$this->Event->updateAll(
$flyers,
array('festival_id' => $id)
)
或updateAll()
仅适用于常规字段吗?
答案 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);
这对你有用吗?