Php Laravel数据库多对多(Mysql)或将Json保留在表中
我需要一个建议,我正在使用laravel,我不确定我应该使用多对多(mysql)还是使用表中编码的Json(其余代码工作正常),希望我能够正确解释它。因此,用户必须解决一个有问题的考试,并且问题在点击按钮时发生变化(每个问题都在同一个div上,内容在点击jquery时发生变化),因此当用户按下start时,它会显示带有3个(例如)单选框的问题作为正确答案。在用户选择“答案表单”单选按钮并单击“下一步”后,他的答案(值)存储在会话中,然后同一个div显示不同的问题,依此类推。一旦用户进入最后一个问题,他的答案将从会话中提取并发送到电子邮件。现在,对于代码部分,检查表的结构Php Laravel数据库多对多(Mysql)或将Json保留在表中,php,jquery,mysql,json,laravel,Php,Jquery,Mysql,Json,Laravel,我需要一个建议,我正在使用laravel,我不确定我应该使用多对多(mysql)还是使用表中编码的Json(其余代码工作正常),希望我能够正确解释它。因此,用户必须解决一个有问题的考试,并且问题在点击按钮时发生变化(每个问题都在同一个div上,内容在点击jquery时发生变化),因此当用户按下start时,它会显示带有3个(例如)单选框的问题作为正确答案。在用户选择“答案表单”单选按钮并单击“下一步”后,他的答案(值)存储在会话中,然后同一个div显示不同的问题,依此类推。一旦用户进入最后一个问
Schema::create('exams', function(Blueprint $table)
{
$table->increments('id');
$table->string('title')->unique();
$table->text('questions_json'); //json encode see example below
$table->integer('duration');
$table->string('remember_token',64);
$table->timestamps();
});
“questions_json”看起来像(这是一个示例)
这就是我现在所拥有的,所以控制器读取这个json文本并从中删除正确的内容,然后将json发送到带有问答的jquery,然后通过单选按钮和next按钮生成表单
但是有了这个“管理员”就不能在问题出现后进行编辑(必须将id放在json中,这样他才能编辑),但是管理员唯一需要更改这个表格的时间是当他输入错误时。所以我不确定我是应该这样做,还是将db结构更改为多对多 在数据库中存储JSON数据(几乎)从来都不是一个好主意。例如,正如您所注意到的,当您想要编辑数据时,它会变得复杂 我建议采用如下模式: 考试
- 头衔
- 持续时间
- 还记得你的代币吗
- 正文
- 考试id
- 正文
- 问题编号
- 正确(布尔值)
更多关于的信息,目前看来,所有强硬的json都是一个更简单的解决方案,但从长远来看,如果需要更改某些内容,它将导致问题。谢谢你的方案,这将帮助我很多。
[
{
"Question": "1+1?",
"1": "11",
"2": "2",
"3": "-2",
"correct": "2"
},
{
"Question": "What is a rabbit?",
"1": "Mammal",
"2": "Vicious beast with sharp teeth",
"3": "Cute thing",
"correct": "1"
}
]
public function questions(){
return $this->hasMany('Question');
}
public function answers(){
return $this->hasMany('Answer');
}
public function exam(){
return $this->belongsTo('Exam');
}
public function question(){
return $this->belongsTo('Question');
}