Я создаю приложение для управления студентами. Застрял в просмотре отчетов класса. Я могу показать индивидуальные отчеты (оценки, проценты, личные данные, психомоторные области и т. Д.) Для каждого ученика в классе. Но мне нужно показать все отчеты для каждого ученика в классе на одной веб-странице с разрывами страниц между ними. Так что на очень длинной веб-странице у нас будет 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) — это уникальный и первичный ключ в моей таблице результатов. ниже часть моей таблицы:
я использую ограничение стремящейся загрузки.
$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
Этот код не проверен. Надеюсь, поможет.
Других решений пока нет …