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

时间:2015-12-23 10:42:56

标签: cakephp orm 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()

2 个答案:

答案 0 :(得分:1)

以下内容应该有效:

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

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

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

答案 1 :(得分:-1)

在cakephp中更新语句

public function update_data($tmp_id){

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

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

}

}

此处update_data为虚拟功能供您理解。