Сохранение принадлежит модели Cakephp - PullRequest
0 голосов
/ 12 августа 2011

У меня есть следующие ассоциации моделей:

Question belongsTo Category
Category hasMany Question
Question hasMany Answer
Answer belongsTo Question

Я хочу иметь возможность создавать новую категорию при создании Вопроса, но я получаю ошибку проверки Category.id, хотя я не отправляю установку Category.id в массиве $this->data. Я успешно создаю новые ответы в той же форме, но категория не создается.

Моя форма:

<h3>Create multiple choice question</h3>
<?php

echo $this->Form->create('Question', array('action' => 'addmc'));
echo $this->Form->input('Question.name');
echo $this->Form->input('Question.questiontext', array('label' => 'Question Text (What students will see)'));
echo $this->Form->input('Question.generalfeedback', array('label' => 'General feedback (Feedback student will see when reviewing question)'));

for ($i = 0; $i < 4; $i++) {
    echo $this->Form->input('Answer.'.$i.'.answer', array('label' => 'Answer ' . ($i+1)));
    echo $this->Form->input('Answer.'.$i.'.score', array('label' => 'Score (Number from 0 to 100)'));
}
echo $this->Form->input('Category.0.name', array('label' => 'Category'));
echo $this->Form->button('Save question', array('class' => 'form'));
echo $this->Form->end();

?>

Я использую saveAll в контроллере. Я попытался удалить правило проверки для Category.id. Операция сохранения прошла, но категория не была создана.

Ответы [ 2 ]

1 голос
/ 12 августа 2011

в контроллере, вам нужно сначала сохранить категорию, получить вставленный идентификатор и назначить в вопросе category_id, затем вы можете использовать saveAll для вопроса и ответов.

0 голосов
/ 12 августа 2011

Если вопрос относится к категории, у вас, вероятно, есть поле Question.category_id ... Это поле следует использовать для выбора категории в поле выбора (по крайней мере, я так думаю, вы хотите, чтобы оно работало).То, как вы пытаетесь достичь этого сейчас, не имеет смысла для Cake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...