我整晚都在试着更新这样的记录:
$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:(已删除)
发布于 2013-10-25 02:42:59
cakePHP在Models::set()和Controller::set();中都提供了一个名为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()将仅接受此格式的参数,一旦成功设置,您可以执行以下操作
通过调用Model::save(),$isValid = $this->ModelName->validate();
发布于 2013-05-02 12:44:22
使用$this->data而不是$r
示例
$this->data = $this->Question->read(NULL, $question['Question']['id']);$this->set用于设置变量值并将其传递给视图,以便视图可以访问它,其中$this->data表示要存储在数据库中的数据。
如果你使用的是Cake2.0,那么将Cake2.0中只读的$this->data替换为$this->request->data。
发布于 2013-05-02 22:12:40
它不是很“自动化”,但我能够让它像这样工作:
$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);基本上,我只是手动构建数据数组。如果有人知道为什么这样做而不是我之前做的事情,我很想听听。
https://stackoverflow.com/questions/16330401
复制相似问题