我一直在努力整夜更新这样的记录:
$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;
这两条评论显示我尝试过的变化,但也没有用。
@Dipesh:
$this->data = $this->Question->read(NULL, $question['Question']['id']);
$this->Question->status = 'version';
$s = $this->Question->save($this->data);
debug($s);
exit;
@Dipesh 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: (已删除)
答案 0 :(得分:1)
cakePHP在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()
将仅以此格式接受其参数,一旦成功设置,您可以执行以下操作
根据模型中指定的验证规则验证此数据,如此
$ isValid = $ this-> ModelName-> validate();
通过调用Model::save()
答案 1 :(得分:0)
使用$this->data
代替$r
示例强>
$this->data = $this->Question->read(NULL, $question['Question']['id']);
$this->set
用于设置变量值并将其传递给视图,因此视图可以访问它,而$this->data
表示要存储在数据库中的数据。
如果你正在使用Cake 2.0,那么将Cake 2.0中只读的$this->data
替换为$this->request->data
。
答案 2 :(得分: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);
基本上我只是手动构建数据阵列。如果有人知道为什么这样做而不是我之前做的事情,我很乐意听到它。
答案 3 :(得分:0)
试试这些......
$this->Question->id = $question['Question']['id'];
$this->Question->set('status','version');
$this->Question->save();
OR
$aUpdate["id"] = $question['Question']['id'];
$aUpdate["status"] = "version";
$this->Question->save($aUpdate);