我有以下模型:能力,目标,评分和教师
具有以下关系:
能力 有很多 客观
客观 有很多 评分,客观 属于 能力 < br />
评分 属于 客观,评分 属于<< / em> 老师 < br />
老师 有很多 评分
表格:
权限:ID,标题等
目标:ID,标题,capacency_id等[competency_id作为能力的FK]
评分:ID,得分,objective_id,teacher_id等[objective_id和Teacher_id为FK]
老师:ID,名字,姓氏等
问题
我想归还所有具有按能力和目标分组的老师的评分,例如:
teacher1
-- competency1
---- objective1 score
---- objective2 score
-- competency2
---- objective1 score
---- objective2 score
teacher2
-- competency1
---- objective1 score
---- objective2 score
-- competency2
---- objective1 score
---- objective2 score
我可以将所有能力按目标和等级分组为:
能力:: with('objectives.ratings')-> get();
我如何使教师成为第一级:教师-能力-目标-等级?
答案 0 :(得分:0)
我能想到的一个捷径是,使用评分作为数据透视表,在教师和目标之间建立多对多关系。因此,教师与能力之间的距离要短一些。
class Teacher
{
public function objectives()
{
return $this->belongsToMany(Objective::class, 'ratings');
}
}
稍后,您可以说出所有数据:
$teachers = Teacher::with('objectives.competency', 'objectives.ratings')->get();
从视图中,您可以执行以下操作:
@foreach($teachers as $teacher)
<h1>{{$teacher->first_name}} {{$teacher->last_name}}</h1>
@foreach($teacher->objectives->groupBy('competency_id') as $groupedObjectives)
<h2>Competency: {{$groupedObjecttives->first()->competency->title}}</h2>
@foreach($groupedObjectives as $objective)
<p>{{$objective->title}}: {{$objective->ratings->implode('score', ', ')}}</p>
@endforeach
@endforeach
@endforeach