【问题标题】:Updating multiple HABTM relationships in CakePHP在 CakePHP 中更新多个 HABTM 关系
【发布时间】:2011-01-27 23:47:30
【问题描述】:
在 Cake 食谱中,所有示例似乎都使用 save()/saveAll() 来一次更新一条记录的 HABTM 关系。但是,我想使用单个调用创建多对多关联。例如,我有 3 个音乐会活动,我有 2 个传单。我希望这 2 个传单与每个音乐会活动相关联。
我有 2 个表,events,flyers 和一个连接表:events_flyers。所以我想我可以手动将记录添加到连接表中。但我想知道是否有某种方法可以做类似的事情:
$this->Event->updateAll(
$flyers,
array('festival_id' => $id)
)
还是updateAll() 仅适用于常规字段?
【问题讨论】:
标签:
php
cakephp
has-and-belongs-to-many
【解决方案1】:
此答案不使用updateAll,但我知道您可以使用save 和$this->data 中的特殊键控数据创建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);
这对你有用吗?