0

質問を投稿して助けを得ましたが、まだ解決していません。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);
    }
}

ユーザーからの提案による編集後の私の見解:D:

class Test extends AppModel {
var $name= 'Test';
var $primaryKey= 'stuId';
public $validate= array(.......);
}

ビューで $primaryKey を設定し、コントローラーで $this->Test->$primaryKey を設定しましたが、まだエラーが発生しました:

データベース エラー エラー: SQLSTATE[23000]: 整合性制約違反: 1062 Duplicate entry '' for key 'PRIMARY' SQL Query: 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 の本によると) この構文を使用してみてください:

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

  2. 保存されているデータに「studId」が含まれていない理由を確認してください。

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

  3. 私の推測では、リクエスト データには含まれていません。

送信されているフォームにスタッド ID を追加するか、他の適切な方法でリクエスト データに ID を取得します。

サイドノート:

「ビュー」と言い続けていますが、本当は「モデル」を意味しています。

于 2013-03-25T05:00:40.147 に答える