Я пытаюсь обновить строку в cakePHP 2.3.1. У меня есть класс Test, расширяющий 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);
}
}
В книге говорилось, что:
Создание или обновление управляется полем идентификатора модели. Если установлен $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 ', 'Ким Лиен')
Как вы видите, запрос все еще INSERT, а не UPDATE, можете ли вы помочь мне, почему это все еще происходит :(
tests
? - person dhofstet   schedule 22.03.2013