【问题标题】:Updating multiple HABTM relationships in CakePHP在 CakePHP 中更新多个 HABTM 关系
【发布时间】:2011-01-27 23:47:30
【问题描述】:

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

我有 2 个表,eventsflyers 和一个连接表: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);
    

    这对你有用吗?

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多