如何在 CakePHP 2.x 中使用自定义主键调用 Model::save()?

How can I call Model::save() using a custom primary key in CakePHP 2.x?

我要更新一条记录:

//Update: id is set to a numerical value
$this->Recipe->id = 2;
$this->Recipe->save($this->data);

这工作正常。

但是如果我尝试根据 tmp_id:

更新记录,它将不起作用
$this->Recipe->tmp_id = 2;
$this->Recipe->save($this->data);

我知道函数 Model::updateAll()。但我想改用 Model::save()

以下应该有效:

$this->Recipe->primaryKey = 'tmp_id';
$this->Recipe->id = 2;
$this->Recipe->save($this->data);

或者您可以通过将 tmp_id 定义为模型中的主键来永久更改:

class Recipe extends AppModel {
    public $primaryKey = 'tmp_id';
}

更新cakephp中的语句 :

public function update_data($tmp_id){

if($this->request->is('post'){

$this->Recipe->id = $tmp_id;
$this->Recipe->save($this->data);

}

}

此处update_data是虚拟函数供您理解。