我已经发布了一个问题并得到了帮助,但我仍然没有成功。 我试图更新cakePHP 2.3.1中的一行。我有类使用$ 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);
}
}
我根据用户的建议编辑后的视图:D:
class Test extends AppModel {
var $name= 'Test';
var $primaryKey= 'stuId';
public $validate= array(.......);
}
我在View中设置$ primaryKey,在控制器中设置$ this-> Test-> $ primaryKey但仍然出错:
数据库错误错误:SQLSTATE [23000]:完整性约束违规:1062重复条目''用于密钥'PRIMARY'SQL查询:INSERT INTO cakePhp.tests(stuName,stuDoB,stuAdd)VALUES('ĐàoĐứcAnh',' 2013-03-25','KimLiên')
任何人都可以帮助我,我真的需要帮助,我坚持了2天并且无法弄清楚:(
答案 0 :(得分:1)
我认为你必须改变以下一行
$this->Test->stuId = $this->data['Test']['stuId'];
到
$this->Test->id = $this->data['Test']['stuId'];
因为id
属性包含主键值。
答案 1 :(得分:0)
快速尝试:
尝试在控制器代码中将$this->data
更改为$this->request->data
。
更多内容:
底线,您的主键未设置。
尝试使用(根据CakePHP书籍)这种语法:
public $primaryKey = 'stuId'; //notice "public" instead of "var"
检查以找出为什么'studId'不在保存的数据中。
debug($this->request->data);
我的假设是,它不在请求数据中 - 如果是,你会没事的。
将studId添加到正在提交的表单中 以您认为合适的任何其他方式将ID输入请求数据
旁注:
你一直在说“观点”,但你的意思是“模特”。