php-Laravel数据库多对多(Mysql)或将Json保留在表中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-Laravel数据库多对多(Mysql)或将Json保留在表中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1865字,纯文字阅读大概需要3分钟。
内容图文
我需要一个建议,我正在使用laravel,不确定我是否应该多对多(mysql)还是使用表中编码的Json(其余代码工作正常),希望我能够正确解释它.因此,用户必须解决包含问题的考试,并且单击按钮后问题会发生变化(每个问题都在同一div上,单击jquery时内容会发生变化),因此,当用户按下开始时,其显示的问题为3 (例如)单选框作为正确的答案.用户选择答案表单单选按钮并单击下一步后,他的答案(值)将存储在会话中,然后同一div显示不同的问题,依此类推.一旦用户到达最后一个问题,他的答案就会从Session中获取并发送到电子邮件中.现在,对于代码部分,检查表的结构.
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’看起来像(这是示例)
[
{
"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"
}
]
这就是我现在所拥有的,因此控制器读取此json文本并从中删除正确的内容,然后将json发送给带有问题和答案的jQuery,然后使用单选按钮和next按钮生成表单.
但是,有了这个“管理员”后,问题一经输入就无法编辑(必须在json中放入id,这样他才可以),但是管理员唯一需要更改此低谷格式的时间是当他键入错误时.所以我不确定我是否应该保留这种方式或将数据库结构更改为多对多.
解决方法:
(几乎)将JSON数据存储在数据库中绝不是一个好主意.例如,您注意到,当您要编辑数据时,它变得很复杂.
我建议这样的模式:
考试
>标题
>持续时间
>记住令牌
问题
>文字
>考试编号
答案
>文字
> question_id
>正确(布尔值)
然后定义以下关系:
考试模式
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');
}
关于Relations in the Laravel Docs的更多信息
内容总结
以上是互联网集市为您收集整理的php-Laravel数据库多对多(Mysql)或将Json保留在表中全部内容,希望文章能够帮你解决php-Laravel数据库多对多(Mysql)或将Json保留在表中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。