仍然卡在更新行cakephp中

时间:2013-03-25 02:08:19

标签: cakephp

我已经发布了一个问题并得到了帮助,但我仍然没有成功。 我试图更新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天并且无法弄清楚:(

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

更多内容:

底线,您的主键未设置。

  1. 尝试使用(根据CakePHP书籍)这种语法:

    public $primaryKey = 'stuId'; //notice "public" instead of "var"

  2. 检查以找出为什么'studId'不在保存的数据中。

    debug($this->request->data);

  3. 我的假设是,它不在请求数据中 - 如果是,你会没事的。

  4.   

    将studId添加到正在提交的表单中   以您认为合适的任何其他方式将ID输入请求数据

    旁注:

    你一直在说“观点”,但你的意思是“模特”。