1

我将 category_id 设置为 0,并且类别 id 是自动递增的。所以我在 cakephp 中更新了这条记录,然后 cakephp 将插入这条记录来更新这条记录。

$this->Category->id=$id;
$this->Category->save($this->data);

请帮助我...

4

3 回答 3

2

Id 为 0 无效

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 也会尝试插入。

于 2013-11-07T11:53:37.480 回答
1

如果 id 大于 0,Cakephp 将更新记录,否则插入新记录。所以尝试将 id 0 更改为大于 0。试试这个。

于 2013-12-21T09:06:39.830 回答
1

不确定我是否正确理解您,但如果您想更新所有记录 WHERE category_id=0 那么此代码将是有效的:

$this->Category->updateAll(
    $this->data,
    array('Category.category_id' => 0)
);
于 2013-11-07T15:19:43.813 回答