Laravel 4.2在数据透视表中同步多维数组

时间:2015-03-30 10:18:03

标签: laravel-4 pivot-table

这些是关系船功能的表格。

问题表

id
issueName

每期都有多个问题

在Issue.php模型中

public function questions() {
        return $this->hasMany('Question','issueID','id');
    }

问题表

id
issueID
questionText
questionScore

每个问题都属于一个问题,它有相应的分数

在Question.php模型中

public function issues() {
        return $this->belongsTo('Issue');
    }

使用无线电输入我为每个问题选择一个问题,并设置一个questionID数组,即用于保存在数据透视表中的分数。

评估表

id
totalScore

在Assessment.php模型中

public function scores() {
            return $this->belongsToMany('Question','assessments_question_score','assessmentsID','id');
        }
在Question.php模型中

public function assessments() {
            return $this->belongsToMany('Assessment');
        }

assessment_question_score table

id
assessmentsID
questionID
score

当我尝试同步questionID时,使用

分数到assessment_question_score表
$assessments = New Assessment;
...
...
$assessments->save();
$assessments->scores()->sync($questionIDscore);

但它无法正常工作,同步多维阵列或其他我错过的东西是错误的吗?我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

Assessment.php

public function questions() {
   return $this->belongsToMany('Question','assessments_question_score','assessmentsID','questionID');
}

Question.php

public function assessments() {
    return $this->belongsToMany('Assessment','assessments_question_score','questionID','assessmentsID'););
}

然后您可以将问题连接到这样的评估:

$questionIds = array(2,5,6);

$assessment = new Assessment;
$assessment->save();
$assessment->questions()->sync($questionIds);

然后将id为2,5和6的问题与评估联系起来。

获得第一个问题的分数:

$questionScore = $assessment->questions()->first->questionScore;

获取所有问题的总数:

$totalScore = $assessment->questions()->sum('questionScore');

获得所有问题的平均分数:

$averageScore = $assessment->questions()->avg('questionScore');

来源:http://laravel.com/docs/4.2/eloquent#many-to-many 还要搜索“同步”。