我真的很困惑我应该将这种关系用于这种数据结构。为了使一切都可以理解,我有这个脚本系统,你在那里制作一个部分,然后你将一个问题附加到该部分,问题有很多选项(答案),如果用户现在点击该选项有效,每个选项都有一个目标部分。得到了一切都弄清楚了。但我想提出问题和选项可以从任何部分重复使用,但我无法做到这一点,因为如果有意义,选项目标部分必须与每个部分不同。我真的很困惑,哪种方法最好,我可以做得很脏,但我想以最好,最干净的方式做到这一点。
基本上 我目前有
科目 姓名,身体
问题专栏 name,question,section_id
选项Col name,value,question_id,target_section
我希望问题可以在任何部分重复使用,但我希望Options target_section字段与每个部分不同。
答案 0 :(得分:1)
我建议你将该部分的hasMany关系与问题进行关联,然后对问题和部分的选项进行一对一的关系,并对问题和选项进行hasMany关系。如果你能为想要实现的目标发布代码或相关数据,我可以更好地解释你。
答案 1 :(得分:0)
虽然我不完全理解你的问题,但我可以尝试尽我所能,直到你解释一下你想要达到的最终结果。
您可以设置数据库和模型,如下所示......
章节表 这将有列:
id, name, body
模型看起来像这样:
Section.php(章节型号)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Section extends Model
{
public function question()
{
return $this->hasOne('App\Questions');
}
}
问题表 这将有列:
id, section_id, name, body
你的问题模型可能看起来像这样:
Questions.php(问题模型)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Questions extends Model
{
public function options()
{
return $this->hasMany('App\Options');
}
public function section()
{
return $this->belongsTo('App\Section');
}
}
最后,你的选项表 选项表 这将有列:
id, questions_id, section_id, name, body
使用类似于:
的模型Options.php(选项模型)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Options extends Model
{
public function question()
{
return $this->belongsTo('App\Questions', 'id');
}
}
这样的关系可以让你做以下事情:
$question->options
获取与该问题相关的选项
$section->question
获取与该部分相关的问题
$question->section
获取与该问题相关的部分