我有4张桌子: - 专辑 - 图片 - 标签 - images_tags(id,image_id,tag_id)
我想编辑多条记录。一切正常,直到我添加标签表。 现在我的$ this->数据看起来像这样:(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-&gt;数据数组。以前我只有图像数据:
Array(
[124] => Array(
[id] => 2,
...
),
[125] => Array(
...
);
但现在我还需要有关标签的信息。我正在使用saveAll()函数。
答案 0 :(得分:0)
您需要转换[Tag]索引。保存hasAndBelongsToMany的正确格式是[Tag] [Tag] =&gt;阵列(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。