2011-01-27 11 views
-3

Cakeクックブックでは、すべての例で、一度に1つのレコードのHABTM関係を更新するのに、save()/saveAll()が使用されています。しかし、私は、1回の呼び出しで多対多の関連付けを作成したいと考えています。たとえば、3つのコンサートイベントがあり、2つのチラシがあります。そして、私はそれらの2つのチラシをそれぞれのコンサートイベントに関連づけたい。CakePHPで複数のHABTM関係を更新する

私は2つのテーブルevents,flyersと結合テーブル:events_flyersを持っています。だから私はレコードを手動で結合テーブルに追加することができたと思います。私はに似た何かができるいくつかの方法があった場合でも、私は思っていた:

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

それともupdateAll()のみ定期フィールドに動作しますか?

答えて

1

この答えはupdateAllを使用しませんが、私はあなたが$this->dataでHABTMのsaveを使用して団体、特別にキー付きデータを作成することができることを知っている:

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

これは機能しますか?

関連する問題