我一次创建多个关联,在保存方面存在一些问题。
我有以下代码:
<?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();似乎做得不多。
答案 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。