Как редактировать несколько записей с ассоциациями? - PullRequest
0 голосов
/ 15 апреля 2011

у меня 4 таблицы: - альбомы - изображений - теги - images_tags (id, image_id, tag_id)

Я хотел бы редактировать несколько записей. Все отлично работает, пока я не добавлю теги таблицы. Теперь мои данные $ this-> выглядят так: (124 - идентификатор изображения)

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 ().

1 Ответ

0 голосов
/ 15 апреля 2011

Вам нужно будет преобразовать индекс [Tag].Правильный формат для сохранения hasAndBelongsToMany - это [Tag] [Tag] => array (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 - идентификаторы связанных тегов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...