【发布时间】:2013-03-22 04:55:56
【问题描述】:
我正在尝试更新 cakePHP 2.3.1 中的一行。我有类 Test 使用 $validates 数组扩展 AppModel, 和控制器(简化):
public function editstudent() {
if($this->request->data) {
$this->Test->stuId= $this->data['Test']['stuId'];
if ($this->Test->save($this->request->data)) {
$this->set('state',1);
}
}
书上说:
创建或更新由模型的 id 字段控制。如果设置了 $Model->id,则更新具有此主键的记录。否则会创建一条新记录:
如上所述,我设置了 $this->Test->StuId 但是当我提交表单时它仍然显示:
错误:SQLSTATE[23000]:违反完整性约束:1062 键 'PRIMARY' 的重复条目 '' SQL 查询:INSERT INTO ........
如错误所示,查询仍然是 INSERT 而不是 UPDATE 那么我需要做什么才能更新,请帮助我:(
编辑:@thaJeztah 我已经像这样编辑了我的视图:
class Test extends AppModel {
var $name= 'Test';
var $primaryKey= 'stuId';
public $validate= array(.......);
}
但还是出现同样的问题
数据库错误 错误:SQLSTATE [23000]:违反完整性约束:1062 键 'PRIMARY' 的重复条目 '' SQL 查询: INSERT INTO
cakePhp.tests(stuName,stuDoB,stuAdd) VALUES ('Đào Đức Anh', '2013-03-25', 'Kim Liên')
如您所见,查询仍然是 INSERT 而不是 UPDATE,您能帮我解释一下为什么仍然会发生这种情况吗:(
【问题讨论】:
-
tests表的结构是什么? -
'tests' 表有 5 个字段:主键:stuId 和另外 4 个字段:stuName,stuSex,stuDoB,stuAdd
标签: cakephp cakephp-2.3