0

我已经发布了一个问题并得到了帮助,但我仍然没有成功。我试图更新 cakePHP 2.3.1 中的一行。我有类测试扩展 AppModel 与 $validates 数组,以及控制器(简化):

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 Đức Anh', '2013-03 -25', '金莲')

谁能帮帮我,我真的需要帮助,我被困在这个问题上 2 天,无法弄清楚:(

4

3 回答 3

1

我认为您必须更改以下行

$this->Test->stuId = $this->data['Test']['stuId'];

$this->Test->id = $this->data['Test']['stuId'];

因为它是id包含主键值的属性。

于 2013-03-25T06:45:19.530 回答
0

快速尝试:

尝试在您的控制器代码中更改$this->data为。$this->request->data

更多的东西:

最重要的是,您的主键没有设置。

  1. 尝试使用(根据 CakePHP book)这个语法:

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

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

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

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

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

边注:

你一直说“视图”,但你真正的意思是“模型”。

于 2013-03-25T05:00:40.147 回答
0

在 AppModel.php 中添加您的主键 public $primaryKey='username';

于 2021-09-07T05:05:01.360 回答