在CakePHP中使用HABTM进行保存

时间:2009-07-30 03:41:27

标签: php cakephp has-and-belongs-to-many

我一次创建多个关联,在保存方面存在一些问题。

我有以下代码:

<?php
foreach($userData as $user) {
    $data = array('User' => array('id' => $user['id']), 'Site' => array('id' => $user['site_id']));
    $this->User->save($data);
}
?>

我已经尝试过以不同方式格式化数据数组,尽管我总是遇到同样的问题。插入新文件或更新当前条目时,前一个条目将被移动。

我可以使用以下内容,但我需要触发一个行为。

$this->User->SiteUser->save($data);

编辑:还是$ this-&gt; User-&gt; create();似乎做得不多。

2 个答案:

答案 0 :(得分:8)

一旦唯一键设置为 false ,一切都能正确保存,IRC帮助解决了问题所在。

//In the user model
var $hasAndBelongsToMany = array(
  'Site' => array(
    'className' => 'Site',
    'unique' => false
  )
);

答案 1 :(得分:1)

尝试在新id之前重置save(),可能在两个型号上重复:

$this->User->id = null;

Cake决定是根据集id更新还是插入条目,save()自动设置id。不确定为什么create()没有为你处理这个问题。

此外,如果您想保存HABTM数据,则需要使用saveAll()代替save()。另请参阅this question