我正在建立一个用于大学管理的网站,教授可以登录该网站并为他们所教的学生分配分数。
我的数据库中有一个名为 “ IA_Marks” 的表:
|Student_ID|Subject_Code|Name|Marks1|Marks2|Marks3|Semester|Division|
在我的数据库中还有一个名为 “ Classroom_Mapper” 的表,该表可帮助将教授与主题映射到教室:
|Prof_ID|Subject_Code|Semester|Division|
我的问题:
我希望从 Classroom_Mapper 表中获取Subject_Code
,Semester
,Division
字段,以便我可以使用它从 IA_Marks 表中获取Student_ID
,Name
,Marks1,2,3
。
要从 Classroom_Mapper 表中获取3个字段,我需要一个Prof_ID
字段,该字段对于每个教授都是唯一 。
每个教授都使用他的Prof_ID
登录。
我需要获取这些字段,以便可以缩小 IA_Marks 上的select
查询结果,该查询当前显示整个表格。
这是我当前的代码:它显示完整的表,而不仅仅是显示所需的记录:
UserDefinedController.php
public function show(){
$data = DB::table('iamarks')->get();
return view('ia',compact('data'));
}
ia.blade.php
<table>
<tr>
<th>ID</th>
<th>SUBCODE</th>
<th>NAME</th>
<th>IA1</th>
<th>IA2</th>
<th>IA3</th>
<th>SEMESTER</th>
<th>DIVISION</th>
</tr>
@foreach($data as $row)
<tr>
<td>{{ $row->ID}}</td>
<td>{{ $row->subcode }}</td>
<td>{{ $row->name }}</td>
<td>{{ $row->IA1 }}</td>
<td>{{ $row->IA2 }}</td>
<td>{{ $row->IA3 }}</td>
<td>{{ $row->semester }}</td>
<td>{{ $row->division }}</td>
</tr>
@endforeach
</table>
我解决这个问题的想法: (语法肯定已关闭!但是我希望您能看到我的工作方向。)
//Think of this as a pseudo-code
public function show(){
$Prof_ID = LoggedInUser->Prof_ID;
$Semester = DB::table('classroom_mapper')->pluck('Semester')->where('Prof_ID','=',$Prof_ID);
$Division = DB::table('classroom_mapper')->pluck('Division')->where('Prof_ID','=',$Prof_ID);
$data = DB::table('iamarks')->get()->where('Semester = $Semester' AND 'Division = $Division');
return view('ia',compact('data'));
}
我只是不知道如何获取这些值!
答案 0 :(得分:3)
如何获取Prof_ID?
使用auth
助手或Auth
类可以运行:
Auth::user()->Prof_ID
获取用户的ID。如果您使用的是Auth
类,请确保您use
使用它:
use Auth;
获取Prof_ID时,如何从Classroom_Mapper中获取其他3个字段到我的控制器中?
您将按照official documentation中的说明设置教授模型之间的关系。或者,您可以对模型进行沼泽标准join
提取所需的数据。
答案 1 :(得分:0)
我设法解决了这个问题。这是我所做的:
public function showTable(){
$sem = DB::table('classroom_mappers')->where('Prof_ID', auth()->user()->PID)->pluck('semester');
$division = DB::table('classroom_mappers')->where('Prof_ID', auth()->user()->PID)->pluck('division');
$data = DB::table('iamarks')->where([['semester','=',$sem],['division','=',$division]])->get();
return view('ia',compact('data'));
}
这可行,但是我在这里还有另一个问题:
假设教授在两个学期内教授两个科目。然后,where
子句将从映射器表返回多个结果。我试图通过仅向目标学期和目标部门的学生展示来解决该问题,但是我不确定如何做到这一点。