我有兴趣创建一个可以创建测验的应用程序,通过提供测验名称,问题和4个可能的答案(1个正确,3个不正确)。用户可以访问这些测验,某些用户类型可以编辑它们,而其他用户可以回答它们。
我应该在不同的表格中分开问题和答案吗?或者我应该只有一个问题表,其中有4个字段用于答案?
如果您之前已经这样做了,那么在创建此测验生成器时我应该考虑哪些其他因素?
答案 0 :(得分:2)
我会说你们的关系应该是这样的:
User hasMany Quiz
Quiz hasMany Question
Question hasMany Answer
Quiz belongsTo User
Question belongsTo Quiz
Answer belongsTo Question
如果要求发生变化,这将允许您有超过4个答案。
可能需要考虑的事项:
如果答案是正确的,你将如何测试?布尔值,字符串比较?
如果给定的问题要求您在“是/否”或“真/假”情况下无法轻易显示的内容,该怎么办?如果您想限制多项选择,可能永远不会出现此问题,但可能会出现此问题。
你打算如何评分测验?另一个表存储有关用户测验历史的统计信息?或者是一次性使用会话?
使用全部保存
// view
echo $this->Form->create('Question', array('action'=>'add'));
echo $this->Form->input('Question.name', array('label'=>'Question name'));
echo $this->Form->input('Answer.0.title', array('label'=>'Answer'));
// etc
// add method
if (!empty($this->data)) {
$this->Question->saveAll($this->data, array('validate'=>'first'));
}
应该是您所需要的一切〜