Связывание моделей CakePHP HABTM без представления - PullRequest
0 голосов
/ 05 июля 2011

Я пишу импорт из CSV и смог успешно вручную установить поля данных для модели в коде с помощью функции $this->Book->set() и передать ей хэш, содержащий все пары fieldName => value.

Как я могу создать ассоциации HABTM в коде? Все примеры, которые я видел в документации, основаны на $this->data, возвращенном из формы в представлении. Поскольку мои данные поступают из CSV-файла, а не из представления, я не могу использовать это!

Так в следующем примере:

// Book habtm Tags
// Tag habtm Books

$this->Book->create();
$this->Book->set(
    array(
      'author' => 'tolkein',
      'title' => 'lord of the rings')
    );

$arrayOfTagIds = array(1, 5, 6);
// Do something with $arrayOfTagIds...
$this->Book->save();

Как бы я связал $ arrayOfTagIds с Книгой?

1 Ответ

3 голосов
/ 05 июля 2011

Вместо использования set для добавления данных в новый объект и save для его сохранения используйте create и saveAll.В приведенном ниже примере замените модель BookTag на имя модели, используемой в отношениях между книгами и тегами.Вам также необходимо изменить tag_id, чтобы оно соответствовало имени поля, представляющего идентификатор тега.

Пример:

$book = array(
  'Book' => array(
    'author' => 'tolkein',
    'title' => 'lord of the rings'
  ),
  'Tag' => array(
    'Tag' => array(1,5,6);
  )
);

$this->Book->create($book);
$this->Book->saveAll();
...