2009-10-20 3 views
0

Я как бы новичок с CakePHP. У меня есть две таблицы: контакты и теги, таблица HABTM contacts_tags. Пользователь должен иметь возможность добавлять теги, которые люди могут делать на delicious.com. они получают список тегов по мере их ввода. Они также могут добавлять новые теги, просто набрав их. Я хочу проверить таблицу тегов, чтобы увидеть, какие теги уже присутствуют, а какие нет. Теги, которые являются новыми, должны быть добавлены в таблицу, а идентификаторы вставки добавляются к массиву. Затем я хочу использовать эти теги идентификаторов для обновления таблицы contacts_tags. Вот и все. Эти две функции я создал:Как обновить соединение в CakePHP, вручную

/** 
this function checks for existing tags and creates new tags 
@params string (of comma separated tags) 
@return array (of IDs) 
**/ 
function saveAndCreateTags($tags){ 
    $tags = explode(",", $tags); //create array of tags 
    $idArray = array(); 
    foreach($tags as $tag) { 
     $count = $this->find('count', array('conditions' => array('name' => $tag))); 
     if($count === 0) { 
      $this->create(); 
      if($this->save($tag)) { 
      $idArray[] = $this->getInsertID(); 
      } 
     } 
     else { 
      $idArray[] = $this->getID(); 
     } 
    } 
    return $idArray; 
} 

/** 
this function updates the relational table 
@params array (this array is returned by saveAndCreateTags function 
@params int (id of the contact) 
**/ 
function updateContactTagsTable($idArray, $contactId){ 
    foreach($idArray as $tagId) { 
     $count = $this->ContactTag->hasAny(array('tag_id' => $tagId, 'contact_id' => $contactId)); 
     if($count === 0) { 
      (); 
      $this->ContactTag->save(array('contact_id' => $contactId, 'tag_id' => $tagId)); 
     } 
    }  
} 

Ни один из $ this-> ContactTag-> hasAny, $ this-> ContactTag-> создать, $ this-> ContactTag-> сохранить работает ... Am Я чего-то не хватает?

+0

К сожалению, не мог получить ручку, где проблема, точно. Если вы пытаетесь сохранить связанные данные модели, вам может понадобиться изучить метод Model :: saveAll(), а не Model :: save(). –

ответ

Смежные вопросы