Cakephp更新数据库表中的单个字段

Cakephp更新数据库表中的单个字段,cakephp,Cakephp,使用CakePHP1.3,有没有一个简单的例子说明如何更新(而不是插入)数据库表中的一行 $data = array('list_index' => $id, 'name' => $name); if ($this->save($data)) { return true; } else { return false; } 官方文档指出,这是应该采用的方法,但是,当它试图使用现有主键进行插入时,会抛出一个错误。有人能解释一下吗 您可以使用:

使用CakePHP1.3,有没有一个简单的例子说明如何更新(而不是插入)数据库表中的一行

  $data = array('list_index' => $id, 'name' => $name);
  if ($this->save($data)) {
    return true;
  }
  else {
    return false;
  }
官方文档指出,这是应该采用的方法,但是,当它试图使用现有主键进行插入时,会抛出一个错误。有人能解释一下吗

您可以使用:

$this->Post->read(null, 1);
$this->Post->set(array(
    'title' => 'New title',
    'published' => false
));
$this->Post->save();

从1.3手册:


确保您的模型正确设置了值

在这种情况下,它应该是

class MyModel extends AppModel {
  public $primaryKey = 'list_index';
  // ...
}

如果您不这样做,CakePHP将尝试插入而不是更新。

或者您可以使用
Model::saveField
trusted saveField,但CakePHP说这是一个未定义的方法。一旦您正确设置了主键,请保存字段:$this->ModeName->saveField('name',$name);
class MyModel extends AppModel {
  public $primaryKey = 'list_index';
  // ...
}