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数据中。通过这种方式,编辑可以更容易地完成。这只是我的意见