Вы в значительной степени должны знать идентификатор записи, которую вы обновляете, и, если вы ее не знаете (т.е. она отсутствует в URL, данных POST или сеансе), единственный способ найти это - запрос (в вашем случае на student_id
).
Единственные предложения, которые я могу придумать:
- Не забывайте, что вы можете указать на запись, установив
Model::id
(при условии, что у вас еще нет клавиши id
для ввода $this->data
)
- Если вы сохраняете только одно поле, вы можете использовать
Model::saveField()
.
Код:
if (!empty($this->data)) {
// function that calculates score from answers in $this->data
$score = $this->OnlineExam->checkAnswers(2, $this->data);
// find the record
$record = $this->OnlineExam->find('first', array(
'conditions' => array('OnlineExam.student_id' => $this->Session->read('OnlineExam.studentId')),
'fields' => array('OnlineExam.id')
));
// set the id and save the score
$this->OnlineExam->id = $record['OnlineExam']['id'];
$saved = $this->OnlineExam->saveField('scoreB', $score);
if ($saved) {
$this->redirect(array('controller' => 'OnlineExams', 'action' => 'page3'));
}