2009-11-19 3 views
1

У меня есть две модели, связанные с HABTM (документы и люди).Данные HABTM не сохраняются (cakephp)

class Person extends AppModel { 
    var $name = 'Person'; 
    var $hasAndBelongsToMany = array(
     'Document' => array(
      'className' => 'Document', 
      'joinTable' => 'documents_people', 
      'foreignKey' => 'person_id', 
      'associationForeignKey' => 'document_id', 
      'unique' => false 
     ) 
    ); 

class Document extends AppModel { 
    var $name = 'Document'; 
    var $hasAndBelongsToMany = array(
     'Person'=>array(
      'className' => 'Person', 
      'joinTable' => 'documents_people', 
      'foreignKey' => 'document_id', 
      'associationForeignKey' => 'person_id', 
      'unique' => false 
     ) 
    ); 

У меня есть мнение надстройки документов заселенных одним флажка для каждого человека, который будет иметь отношение к этому документу.

echo $form->input('People', array('type'=>'select', 'multiple'=>'checkbox', 'options'=>$people, 'label' => 'People: ')); 

Это линия от контроллера, которая должна выполнять экономию.

$this->Document->create(); 
if ($this->Document->saveAll($this->data)) { 

Я заметил, что данные не сохраняются в таблице documents_people. Итак, я сбросил $ this-> данные.

документ часть выглядит следующим образом:

[Document] => Array 
    (
     [file_name] => asdasd 
     [tags] => habtm 
     [People] => Array 
      (
       [0] => 6 
       [1] => 12 
       [2] => 15 
      ) 

     [image] => img/docs/2009-11-19-233059Jack.jpg 
    ) 

Тех идентификаторы люди, которых я хочу, связанные с этим документом. Однако ничего не передается document_people. Что я сделал не так?

ответ

7

Возможно, ваш $this->data массив должен иметь раздел «человек», а не во множественном числе «Люди»

пытались ли вы ...

echo $form->input('Person'..... 
+0

Так просто, но правильно. –