Cakephp更新多个子系统的正确方法
在我的例子中,问题对象有多个答案。这是问题数组Cakephp更新多个子系统的正确方法,cakephp,Cakephp,在我的例子中,问题对象有多个答案。这是问题数组 Array ( [Question] => Array ( [id] => 15 [questionary_id] => 11 [type] => MULTIPLE [body] => What activity do you do? [is_deleted] =>
Array
(
[Question] => Array
(
[id] => 15
[questionary_id] => 11
[type] => MULTIPLE
[body] => What activity do you do?
[is_deleted] =>
)
[Answer] => Array
(
[0] => Array
(
[id] => 8
[question_id] => 15
[body] => Basketball
[is_correct] => 1
)
[1] => Array
(
[id] => 9
[question_id] => 15
[body] => Softball
[is_correct] => 1
)
[2] => Array
(
[id] => 10
[question_id] => 15
[body] => Snooker
[is_correct] => 0
)
)
)
现在我想删除垒球,将斯诺克更名为shoker,并添加板球作为新答案。保存问题后,将显示以下数组
Array
(
[Question] => Array
(
[id] => 15
[questionary_id] => 11
[type] => MULTIPLE
[body] => What activity do you do?
[is_deleted] =>
)
[Answer] => Array
(
[0] => Array
(
[id] => 8
[question_id] => 15
[body] => Basketball
[is_correct] => 1
)
[1] => Array
(
[id] => 10
[question_id] => 15
[body] => Shoker
[is_correct] => 0
)
[2] => Array
(
[id] => 15
[question_id] => 15
[body] => Cricket
[is_correct] => 0
)
)
)
最好的方法是什么。我可以删除所有答案并添加新答案。CackHP对此有什么特别之处吗?我找不到解决办法。因此,我删除旧的子项并添加新的子项,如下所示
$this->Question->id = $id;
if ($this->Question->save($this->request->data)) {
$this->loadModel('Answer');
$this->Answer->deleteAll(array('question_id' => $id));
$this->Answer->saveMany($answers);
$this->Session->setFlash(__('The question has been saved.'), 'default', array(
'class' => 'alert alert-success'
));
return $this->redirect(array('action' => 'index', $qId));
} else {
$this->Session->setFlash(__('The question could not be saved. Please, try again.'), 'default', array(
'class' => 'alert alert-danger'
));
}
不要再次添加所有新答案,请尝试编辑答案或仅更新特定问题的答案列表。我不知道你用什么方法储存答案。最好的方法是将答案存储在另一个表中,并将每个问题的答案ID存储在逗号分隔的值或json数据中。通过这种方式,编辑可以更容易地完成。这只是我的意见