这可能有点令人困惑,所以请跟我一起承担
我正在为在线课程设计一个应用程序。 我有以下表格:用户,课程,练习。
每个课程都可以有很多练习,每个用户都可以参加很多课程(有一个course_user表)。
还有一个带有成绩列的pivot exercise_user表格,因此我可以记录每次练习的用户成绩。
到目前为止,非常好。
事情是:在课程页面上,我想在该课程中显示所有练习,并在其中显示当前用户的评分。
在Controller,我首先检查用户是否注册了该课程($ request-&gt; user() - &gt; courses-&gt; contains($ course))并将该课程传递给视图。< / p>
在那之后,我循环完成该课程的每个练习并显示它。
在每门课程中显示用户评分的最佳方法是什么?
修改 这是一个EER图
答案 0 :(得分:2)
你可以急切加载这样的课程;
<out:Row xtt:separator="," xtt:quotes="always">
<out:PayGroupCode>93JH</out:PayGroupCode>
<out:LegacyID>93JH000660265</out:LegacyID>
<out:WorkdayID>660265</out:WorkdayID>
<out:Name>SixWFNLastname SixWFNFirstname</out:Name>
<out:Status>Active</out:Status>
<out:Transaction>CHANGE</out:Transaction>
<out:Process_Type>DTA</out:Process_Type>
<out:Type>Address</out:Type>
<out:SubType>Country_Region</out:SubType>
<out:Effective_Date>2017-03-06</out:Effective_Date>
<out:Old_Value>WORK AMEC 2020 Winston Park Drive, Suite 700 Oakville L6H 6X7 CA ON
Ontario</out:Old_Value>
<out:New_Value>AB</out:New_Value>
</out:Row>
然后在你的刀片中:
$course = Course::find($id)->with("excersices")->first();
有关Eager Loading的更多信息。
修改强>
如果你在课程和一对一之间建立关系,我认为这可行:
@foreach($course->excercises as $excercise)
{{ $excercise->pivot->grade }}
@endforeach
在刀片中,我相信是这样的:
$course = Course::find($id)->with([//get this course
'users' => function ($query) {
$query->where('id', $request->user()->id); //with only this user
},'users.excercises' => function ($query) {
$query->where('course_id', $id); //user excercises for this course
}
]);