2011-04-15 39 views
0

我有4个表: - 专辑 - 图像 - 标签 - images_tags(ID,image_id,TAG_ID)如何用关联编辑多个记录?

我想编辑多个记录。一切工作正常,直到我添加标签表。 现在我的$这个 - >数据是这样的:(124图像ID)

Array(
    [124] => Array(
      [Image] => Array 
      (
       [id] => 124 
       ... 
      ) 

      [Album] => Array 
      (
       [id] => 2 
       ... 
      ) 

      [Tag] => Array 
      (
        [0] => Array 
        (
         [id] => 2 
         .... 
       ) 
      ) 
     [125] => Array(... 
) 

这是我的观点编辑文件:

<?php foreach($this->data as $key => $value) { 

echo $this->Form->input('Image.'.$key.'.id'); 
echo $this->Form->input('Image.'.$key.'.title'); 
echo $this->Form->input('Image.'.$key.'.Tag'); // multi select for tags 
... 

与形象控制器编辑动作:

$result = $this->Image->find('all', array(
     'conditions' => array('Image.id' => $img_ids)) 
); 

$this->data['Image'] = Set::combine($result, '{n}.Image.id', '{n}'); 

我不知道如何绑定$ this-> data数组与多个编辑窗体。以前我只有图像数据:

Array(
     [124] => Array(
        [id] => 2, 
        ... 
     ), 
     [125] => Array(
        ... 
); 

但现在我还需要有关标签的信息。我正在使用saveAll()函数。

回答

0

您需要转换[Tag]索引。保存hasAndBelongsToMany的正确格式是[Tag] [Tag] =>数组(id1,id2,id3,...)。例如:

Array(
[124] => Array(
     [Image] => Array 
     (
      [id] => 124 
      ... 
     ) 

     [Album] => Array 
     (
      [id] => 2 
      ... 
     ) 

     [Tag] => Array 
     (
       [Tag] => Array 
       (
        [0] => 2, 
        [1] => 16, 
        ... 
      ) 
     ) 
    [125] => Array(... 
) 

其中2和16是相关标签的ID。

+0

好的,我明白了。但我怎样才能转换数组来获得这样的格式?当我使用$ this-> Form-> input('Image。'。$ key。'。id')时,我得到value = data [Image] [124] [id],这是不正确的。 – user708933 2011-04-15 20:44:48

相关问题