public function exportScores($id) { //check if current user has created the quiz $user_id = Auth::user()->id; $quiz_schedule = QuizSchedule::find($id); $quiz = Quiz::find($quiz_schedule->quiz_id); $class = DB::table('classes')->where('id', '=', $quiz_schedule->class_id)->first(); if ($quiz_schedule->user_id != $user_id) { return Redirect::to('/scores/' . $id)->with('message', array('type' => 'danger', 'text' => 'You do not have the permission to export scores for this quiz.')); } $filename = "{$class->name}-{$quiz->title}-{$quiz_schedule->datetime_from}"; Excel::create($filename, function ($excel) use($id, $quiz_schedule) { $excel->sheet('score-sheet', function ($sheet) use($id, $quiz_schedule) { $scores = DB::table('student_quizzes')->where('quiz_schedule_id', '=', $id)->lists('score', 'student_id'); $students = DB::table('students')->join('student_classes', 'students.id', '=', 'student_classes.student_id')->select('students.id', 'last_name', 'first_name', 'middle_initial')->where('student_classes.class_id', '=', $quiz_schedule->class_id)->orderBy('gender', 'DESC')->orderBy('last_name', 'ASC')->get(); $student_scores = array(array('ID Number', 'Student Name', 'Score')); foreach ($students as $student) { $score = ''; if (isset($scores[$student->id])) { $score = $scores[$student->id]; } $student_scores[] = array('id' => $student->id, 'name' => "{$student->last_name}, {$student->first_name} {$student->middle_initial}", 'score' => $score); } $sheet->fromArray($student_scores, null, 'A1', false, false); }); })->export('xls'); }