Создание нескольких листов с отчетами о студентах на одной веб-странице

Я создаю приложение для управления студентами. Застрял в просмотре отчетов класса. Я могу показать индивидуальные отчеты (оценки, проценты, личные данные, психомоторные области и т. Д.) Для каждого ученика в классе. Но мне нужно показать все отчеты для каждого ученика в классе на одной веб-странице с разрывами страниц между ними. Так что на очень длинной веб-странице у нас будет Student1 со всеми результатами и информацией, Student2 со всеми результатами и информацией. В моей таблице результатов на БД есть столбцы studentId и StudentClass для различения вещей. Я чувствую, что должен использовать петлю, но не могу понять, как это сделать. Ниже мой контроллер:

public function viewclassresults(Request $request){



$term = $request->get('term');
if ($term ==1) {
$termended = "First";
}
$session = $request->get('session');
$sessionnow = Session::where('id', $session)->first()->name;
$classname = $request->classname;
$class_id = $request->class_id;
$teachersignature = Stclass::where('id', $class_id)->first()->teachersignature;
$teachername = Stclass::find($class_id)->teachers()->first()->fullName;

$setting = Setting::all()->first();

$grades = DB::table('grades')->get();
$comments = Comment::all();

$results = DB::table('results')
->where('studentClass', $class_id)->where('session', $session)->where('term', $term)->whereNull('deleted_at')
->selectRaw('results.*, (results.test1 + results.test2)/2 as cav, (results.exam + (results.test1 + results.test2)/2)/2 as totalmark, results.studentId as classstudents')->get();









$rating = DB::table('ratings')->where('term', $term)->where('session', $session)->first();



if($results->isEmpty()){

return "No Result";
//
} else{
return view('teacher.results.viewclassresults', compact('subjects', 'studentname', 'regNumber', 'studentClass', 'studentId', 'term', 'session', 'results', 'student', 'setting', 'sessionnow', 'classname', 'termended', 'grades', 'comments', 'rating', 'teachername', 'resultpercent', 'resultpercentclass', 'teachersignature', 'classstudents'));
//
}



}

Это $ результаты, которые на самом деле показывают индивидуальные результаты. Обратите внимание, что resultid (id) — это уникальный и первичный ключ в моей таблице результатов. ниже часть моей таблицы:

моя таблица результатов

1

Решение

я использую ограничение стремящейся загрузки.

$student = Student::with(['results'=> function($q1) use ($term, $studentId) {
$q1->where('term', $term)
->where('studentId', $studentId)
->whereNull('deleted_at')
->selectRaw('results.*, (results.test1 + results.test2) as cav, results.exam + results.test1 + results.test2 as totalmark');

},'ratings' => function($q2) use ($term, $session){
$q2->where('term', $term)
->where('session', $session)
->first();
}])->get();

return view('view.template',compact('student'));

Я вижу, что у вас много результатов. Вы можете просто добавить метод в модель вашего студента и загрузить с его помощью результаты другого типа. Я не уверен, каковы ваши отношения, но вы, по сути, просто продолжаете цепляться выше.

Условные операторы в контроллере не нужны. Вы можете делать все это в представлении и разделять различные части.

Вид будет выглядеть примерно так

@foreach($student as $student)
@if($student->result->empty())
<h1>No student result.</h1>
@else
@foreach($student->result as $result)
//Get student result
@endforeach
@endif
@endforeach

Этот код не проверен. Надеюсь, поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector