Вопрос

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

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)) {

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

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

[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 ничего не передается.Что я сделал не так?

Это было полезно?

Решение

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

Попытался ли ты...

echo $form->input('Person'.....
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top