在没有视图的情况下关联CakePHP HABTM模型

时间:2011-07-04 22:16:01

标签: php cakephp cakephp-1.3

我正在从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与Book相关联?

1 个答案:

答案 0 :(得分:3)

使用setsave,而不是使用create向新实体添加数据而使用saveAll保存数据。在下面的示例中,将BookTag模型替换为书籍和标签之间关系中使用的模型的名称。您还需要更改tag_id以匹配代表标记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();