3

私は一晩中、次のような記録を更新しようと試みてきました:

                $r = $this->Question->read(NULL, $question['Question']['id']);
                debug($r);// This is a complete Question array
                $this->Question->set('status', 'version');
                $s = $this->Question->save();
                //$s = $this->Question->save($r['Question']);//this also doesn't work
                debug($s); // = False every time!! Why??
                exit;

2 つのコメントは、私が試したバリエーションを示していますが、うまくいきませんでした。

@ディペッシュ:

                $this->data = $this->Question->read(NULL, $question['Question']['id']);
                $this->Question->status = 'version';
                $s = $this->Question->save($this->data);
                debug($s);
                exit;

@ディペッシュII:

                $this->request->data = $this->Question->read(NULL, $question['Question']['id']);
                debug($this->data);
                //$this->Question->status = 'version';
                $this->request->data['Question']['status'] = 'version';
                $s = $this->Question->save($this->request->data);
                //$s = $this->Question->save($r['Question']);
                debug($s);
                exit;

@Dipesh III: (削除)

4

4 に答える 4

1

CakePHP は set() と呼ばれるメソッドを両方で提供しModels::set()ますController::set();

についてController::set() このメソッドは、任意のコントローラ メソッドからビュー レベルの変数を設定するために使用されます。たとえば、モデルからレコードをフェッチし、ビュー用に設定してクライアントに表示します。

$data = $this->{ModelName}->find('first');
$this->set('dataForView',$data) // now you can access $data in your view as $dataForView

Model::set() について このメソッドは、モデルにデータを設定するために使用されます。渡される配列の形式は、Model::save() メソッドで使用されるものと同じでなければなりません。つまり、次のようになります。

$dataFormModel = array('ModelName'=>array('col_name'=>$colValue));
$this->{ModelName}->set($dataForModel);

Model::set()は、この形式でのみそのパラメータを受け入れます。設定が成功したら、次のことができます

  1. このデータをモデルで指定された検証ルールに対して直接検証します

    $isValid = $this->ModelName->validate();

  2. 呼び出しによるデータの保存/更新Model::save()

于 2013-10-24T18:42:59.023 に答える
0

それはあまり「自動」ではありませんが、私はこれを次のように機能させることができました:

$set_perm_id = 42;//who cares
$data = array(
            'Question'=> array(
                        'id'=> $question['Question']['id'],
                        'perm_id'=> $set_perm_id,
                        'status'=>'version'
                        )
            );
$s=$this->Question->save($data);

基本的に、データ配列を手動で構築しているだけです。私が以前行っていたのではなく、なぜこれが機能するのかを誰かが知っているなら、ぜひ聞いてみたい.

于 2013-05-02T14:12:39.753 に答える
0

これらの行を試してみてください..

$this->Question->id =  $question['Question']['id'];
$this->Question->set('status','version');
$this->Question->save();

また

$aUpdate["id"] = $question['Question']['id'];
$aUpdate["status"] = "version";
$this->Question->save($aUpdate);
于 2013-05-03T04:30:44.280 に答える
0

$this->dataの代わりに使用$r

$this->data = $this->Question->read(NULL, $question['Question']['id']);

$this->set変数値を設定してビューに渡すために使用されるため、ビュー$this->dataはデータベースに格納されるデータを表す場所にアクセスできます。

$this->dataCake 2.0 を使用している場合は、Cake 2.0 で読み取り専用である をに置き換え$this->request->dataます。

于 2013-05-02T04:44:21.567 に答える