Laravel有许多模型关系

时间:2015-05-29 22:06:06

标签: model-view-controller database-design eloquent laravel-5 relationship

我有一个名为jobs的表和另一个名为job_questions的表 - 一个工作可以有五个筛选问题。表job_questions是一种查找表,但有一些附加数据如下:

job_questions
-------------
job_id  int
question_id int 
question  varchar
expected_answer enum ('y',  'n')

job_id | question_id | question               | expected_answer
--------------------------------------------------------------
   1   |      1      | Do you have experience |     Y

没有一个叫做问题的表 - question_id只是指一个表格上的问题编号(1-5)你如何在laravel中绘制这样一个模型,因为你通常不会在laravel中有多对多的模型类?我是否为查找表创建了一个模型类,否则我将如何提取它包含的附加信息?

1 个答案:

答案 0 :(得分:0)

如果一个问题可以在多个工作中,那么你确实有多对多的关系。

您需要一张工作表和一张表来表示数据。要真正建立关系,你需要一个数据透视表。基本上它会有job_idquestion_id,所以如果工作3有问题123,那么会有三个问题此表中的行包含job_id 3和三个question_id。

您不需要此数据透视表的模型,只需要两个实际数据的模型。

在您的模型中,关系函数不会发生太大变化。两者都有many字:return $this->belongsToMany('App\Job', 'pivot_table_name', 'question_id_column', 'job_id_column')。您也可以将此方法放在另一个模型中,这样您就可以查询关系,问题的工作和工作的问题。参数2和属于belongsToMany的参数是可选的,但您可能至少需要第二个来设置数据透视表名称。

这里的文档在这里: http://laravel.com/docs/5.0/eloquent#many-to-many 和  http://laravel.com/docs/5.0/eloquent#working-with-pivot-tables