我将 category_id 设置为 0,并且类别 id 是自动递增的。所以我在 cakephp 中更新了这条记录,然后 cakephp 将插入这条记录来更新这条记录。
$this->Category->id=$id;
$this->Category->save($this->data);
请帮助我...
CakePHP有一个隐含的假设,即所有标识符都是真实的:
/**
* Returns the current record's ID
*
* @param integer $list Index on which the composed ID is located
* @return mixed The ID of the current record, false if no ID
*/
public function getID($list = 0) {
if (empty($this->id) || ...) {
return false;
}
...
因此尝试使用 0 的 id 进行保存将不起作用,即使存在具有该虚假 id 的行,Cake 也会尝试插入。
如果 id 大于 0,Cakephp 将更新记录,否则插入新记录。所以尝试将 id 0 更改为大于 0。试试这个。
不确定我是否正确理解您,但如果您想更新所有记录 WHERE category_id=0 那么此代码将是有效的:
$this->Category->updateAll(
$this->data,
array('Category.category_id' => 0)
);