CakePHP 2.3.1 で行を更新しようとしています。クラス Test で AppModel を $validates 配列で拡張し、Controller( simple ) を使用しています。
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 ........
エラーが示したように、クエリはまだ UPDATE ではなく INSERT です。更新するにはどうすればよいですか。pls は私を助けてくれます :(
EDIT:@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')
ご覧のとおり、クエリはまだ UPDATE ではなく INSERT です。