这些是关系船功能的表格。
问题表
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);
但它无法正常工作,同步多维阵列或其他我错过的东西是错误的吗?我怎么能做到这一点?
答案 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 还要搜索“同步”。