【发布时间】:2018-06-19 14:46:28
【问题描述】:
我正在使用 Laravel 5.6。我正在尝试从grading_info 表中查询信息,但我也想从student_info 表中返回学生姓名和其他信息。我只想返回grading_info 表中与当前登录的教师相关的记录。目前它为所有教师返回信息。我知道我可以添加一个where 子句,但我正在努力学习雄辩,想知道是否有任何方法可以做到这一点?
教师和学生可以在grading_info 表中拥有许多条目,并且任何教师都可以对任何学生进行评分。
我想退回这样的东西
{
gradeID,
gradeDate,
gradeInfo
.....
student: {
studentName,
studentPhoneNumber,
studentEmail
......
}
}
users 表(只存储教师,不存储学生)
- 身份证
教师信息
- teacherID(链接到用户表中的 id)
学生信息
- id(自动递增。与 users 表无关)
分级信息
- studentID(链接到来自 student_info 的 id)
- teacherID(链接到用户的 id)
用户模型
public function grades(){
return $this->hasMany(GradingInfo::class, 'studentID');
}
GradingInfo 模型
public function teacher(){
return $this->belongsTo(User::class, 'id', 'teacherID');
}
public function student() {
return $this->belongsTo(StudentInfo::class, 'studentID', 'id');
}
学生信息模型
public function grades() {
return $this->hasMany(SessionInfo::class, 'studentID', 'id');
}
教师信息模型
// Nothing in here.
教师控制器
public function getGrades(Request $request)
{
$user = Auth::user(); // This is the teacher
$grades = $user->with('sessions.student')->orderBy('created_at', 'DESC')->get();
return response()->json(['sessions' => $sessions], 200);
}
【问题讨论】: